Ruby

よちよち.rbへ行った

本日よちよち.rbへ参加してまいりました! 今回は伊藤淳一さんがゲストとしてきてくださっており、参加者の質問に答えてくれるというコンテンツがありました!! 参加者自己紹介では、参加者のみなさんが伊藤さんを知ったきっかけを話しました! 自分は以下…

TokyoGirlsrbに参加してきた!!

本日はTokyoGirlsrbというイベントに参加してきました!! TokyoGirlsrbは、女性が参加しやすい(でも女性限定ではない)勉強会です! 実物の伊藤淳一さんにも初めてお会いすることができました! 内容としては以下の4つの発表がありました!! ①去年の4月に…

group_byメソッドで同じ値をまとめる

TaskモデルとLabelモデルが多対多のアソシエーションが組まれており、 あるユーザーが使っているLabelの全種類&各Labelの使用回数を取り出したい事例がありました。 いきなり取り出そうとすると「どのメソッドを使えばいいんだ?!」と混乱したので、解決す…

enumの値を日本語化する

本日、enumの値を英語で設定し、ビューでの表示は日本語にするという設定を行いました。 わからないことが多く時間がかかったため、その手順をメモしておきます!! ①enumの設定 以下のように、英語表記でenumの値を設定します。 class Task < ApplicationRe…

期限が過ぎたレコードを取得

期限が過ぎてしまったレコードを取得したいと思い、whereメソッドで実装しようとしました。 しかし、「引数はどう書けばいいんだっけ。。。」と手間取ってしまったので、そのメモです! やりたかったこと deadlineというDate型のカラムから、今日の日付より…

RSpecでアソシエーションしたデータの作成で手間取った

タイトルの通りなのですが、RSpecでテストを書く際、アソシエーションしたテストデータの作成にだいぶ苦戦しましたw なんとかうまく定義することが出来たので、その方法についてメモしておこうと思います!! FactoryGirlをインストール はじめ、factoryを使…

RuboCop

先日、前から気になっていた、RuboCopを導入してみました! RuboCopはどんなものか、どんなメリットがあるのか、基本的な使い方についてよく分かっていなかったのでまとめてみました! RuboCopとは RuboCopとは、Ruby向けの静的解析ツールです。 コードがコ…

vendor/assets配下のstylesheetsとjavascriptsが認識されない

エラー内容 vendor/asssets/stylesheets配下にcssファイル、vendor/assets/javascripts配下にjsファイルを追加し、 それそれ以下のように読み込ませる指定をしたのですが、読み込んでくれないエラーに遭遇しました。 app/assets/stylesheets/application.css…

gemを使わず管理画面を実装

gemを使わずにadminユーザーのみアクセスできる管理画面の実装をしたので、やり方についてメモしておきます! ①adminネームスペース用のルーティングを定義 adminネームスペース用のルーティングを定義します。 以下のように namespace :admin do ~ end の中…

gemを使わずログイン・ログアウト機能実装

gemを使わないログイン機能の実装方法について忘れてしまいがちなので、やり方をメモしておきます。 userモデルファイルに、has_secure_password を追記します。 userモデルファイルに、has_secure_password を追記します。 これによって、 ①ハッシュ化した…

引数がない時にエラーにならないようにする

タイトルで検索できるようにするため、以下のようにindexアクションの中でwhereメソッドを使って検索機能を実装しておりました。 app/controllers/tasks_controller.rb def index @tasks = Task.all.includes(:user).order("created_at DESC").where('title …

テストデータを大量に作ってベンチマークテストをする

テストデータでtitleカラムにindexを貼った時・貼ってない時の検索スピードを比較したいと思い、以下のようなコードを書いてみました。 spec/models/task_spec.rb require 'rails_helper'require 'benchmark'RSpec.describe Task, type: :model do describe …

リファクタリングの目的・パターン・思考 joker1007さん講演

以下の勉強会に参加してきました!! repro-tech.connpass.com その内容についてのメモです。 長く続いたソフトウェアは複雑化する 特に顧客がつくと簡単に止められなくなる 機能や動きを維持しつつ開発しなくてはならない 開発速度が遅くなる要因 ある機能…

RSpecの練習

テストコードをあまり練習せず過ごしてきてしまったので、今回きちんと基礎から練習してみることにしました!! EverydayRails-RSpecによるRailsテスト入門を購入&伊藤さんのQiitaの記事を参照しながら、自分で書いて試してみました。 leanpub.com qiita.co…

テンプレートエンジンSlim

今までRailsでビューをかくときは、ほとんどerbを使用しておりました。 数回だけhamlに挑戦したことはあるものの、あまり好きになれずerbに戻っておりました。 しかし今回、slimに挑戦することとなったので、slimについての基本的な導入方法、使い方について…

settingslogicのコードリーディング

今日はsettingslogicのコードリーディングに混ぜていただきました!! github.com こちらの記事も参考にさせていただきました。 qiita.com blog.freedom-man.com キモとなるコードはsettingslogic.rbというファイル1ページだけなものの、メタプロが結構出て…

例外処理

昨日Tamarbのチェリー本輪読会で、例外処理について学んだので、忘れないうちに改めてまとめてみることにします! 例外処理とは 例外処理とは、プログラム実行中にエラー(例外)が発生した際、どのように対処するかという処理です。 この処理を書いておくこと…

bunle install するときの --path vendor/bundle オプション

複数人で開発する際bundle install する時には、--path vendor/bundle オプションを付けてあげる必要があるのですね。。。!! コミュニティ開発しているプロジェクトで、自分がgemを追加し、なにもオプション付けづにbunle installをしてしまいましたw なの…

またmysqlが入らないエラーが出た

以前OSをアップデートした時にも出現した、mysqlが入らないエラーが再度出現しました。 以下はエラー文です。 ~/p/r/banken_admin_blog (master|✚1…) [1] $ bundle install Your Gemfile lists the gem kaminari (>= 0) more than once. You should probably…

fish で rails s ができなかったのを解決した

fish を入れていただき、rals sをしようとしたら、 "Rails is not currently installed on this system." と言われてしまいました。。。 bash に切り替えればいつも通りrails s できるのですが、fish だとできません。 gyazo.com なんで?!と思ってとりあえ…

banken のコードリーディング

明日はカルパスさんの鎌倉のお家にてTamarbの方々とコードリーディングを行う予定なので、少しでも話についていけるように予習しておこうと思います。 まだ確定ではないのですが、bankenというgemと、railsのソースコードを読むことになりそうです! 以下が…

オブジェクト指向実践ガイド 第6章〜継承によって振る舞いを変える〜

本日はTamarbの「オブジェクト指向実践ガイド 第6章〜継承によって振る舞いを変える〜」 の輪読会がありました! この本は自分には難しく、説明文の中にJavaの概念も所々出てきたりし、自分で読んだだけでは理解ができておりませんでした。 しかし皆様の具…

Rubymineを試してみる!!

gyazo.com 先月からとても気になっていたRubymineをようやく試してみます! 30日お試し期間なので、いい感じでしたら購入しようと思います。 早速command + B の定義元ジャンプ機能を試してみております。 一瞬で定義元へ飛べて感動です!!!! とても便利…

Ruby2.6.0を入れてみた

25日にRuby2.6.0がリリースされたので、数日出遅れてしまいましたが自分も入れてみました! 以下のリンクが詳しくRuby2.6.0の変更点について書いてくれているサイトです!! Ruby 2.6.0 Released JITコンパイラが導入されて処理が早くなったそうですが、Rail…

Moduleについて

モジュールとは モジュールとは、クラスと同じような構成を持っており、クラスと同じくメソッドを定義することができます。クラス内でモジュールを読み込む事で、モジュールで定義されているメソッドが使えるようになります。 Rubyの場合、クラスの継承は単…

クラスの継承について

Rubyでは、クラスの継承を行うことができます。 クラスの継承を行えば、あるクラスで定義されているメソッドを別のクラスでも改めて定義することなく使うことができるようになります。 クラスの継承について調べてみたので自分なりにまとめてみました。 クラ…

rubyのみでtweet投稿機能とuser登録機能の実装

Railsを使わず、rubyのみでtweet投稿機能とuser登録機能らしきものを実装してみました。 以下はgithubのリポジトリのリンクです。 github.com ファイル構成 ruby_pictweet |------tweet.rb |------user.rb 各ファイルの中身 tweet.rb require "./user" class…

attr_accessorについて

Railsでは特に意識することなく、@tweet.textのように、カラム名をメソッドのように使用するとそのインスタンスが持つ値にアクセスできます。カラムに無い属性についても、attr_accessorを使うことで同じように、属性名をメソッドのように使用できるようにな…

gemのバージョン指定法(>=,~>,など)について

rails アプリケーションのgemfile内でのバージョン指定の方法についてです。 以下のように、gemのバージョンが指定されております。 gem 'rails', '~> 5.1.6'gem 'mysql2', '>= 0.3.18', '< 0.6.0'gem 'puma', '~> 3.7'gem 'sass-rails', '~> 5.0'gem 'uglif…

Tamarbで正規表現について勉強してきました

今日はTamarbというルビーの会に参加させていただきました! Tamaですが開催場所は渋谷でした(ありがたい) 今日学んだことについて書いておこうと思います。 正規表現とは 「パターンを指定して文字列検索や置換を行う一種のミニ言語」(チェリー本より引用…