Rails - byebug gemを導入してdebuggerでデバッグする
debuggerの使い方メモ (RubyMineでいいじゃん感)
Rails - テーブルにカラムを追加する
rails g migration add_<カラム名>_to_<テーブル名> <カラム名>:<カラムの型>
具体例
rails g migration add_password_digest_to_users password_digest:string
Ruby - Refinementsとは
Refinementsとは、Rubyにおけるオープンクラスのスコープを特定の範囲に限定するもの。
具体的に見ていくと、下記のようなオープンクラスを用いた場合、その影響範囲はアプリケーション全体となり、予期せぬところでコードを破壊するなどの危険性があった。
class String def to_alphanumeric gsub(/[^\w\s]/, '') end end
そのため、Refinementsによりオープンクラスの効果範囲を特定のモジュールだけに限定できるようにした。下記のように、refine クラス名 do ... end の形式で宣言し、モジュール内でusingすることでオープンクラスの効果を限定することができる。
module StringExtentions refine String do def to_alphanumeric gsub(/[^\w\s]/, '') end end end module SomeModule using StringExtentions "#3, the *Magic, Number*?".to_alphanumeric # => "3 the Magic Number" end
【オブジェクト指向】SOLID原則について
ググったけどリスコフの置換原則などに関して分かりやすい良記事が見つからなかった。
TODO(後で読む)
https://www.amazon.co.jp/dp/4797347783
アジャイルソフトウェア開発の奥義 第2版 オブジェクト指向開発の神髄と匠の技
RuboCop Airbnbの導入方法
参照URL
Rubocop AirbnbのGithub
https://github.com/airbnb/ruby/tree/master/rubocop-airbnb#installation
Rubocopの公式Doc
https://docs.rubocop.org/en/latest/
設定方法
Rubocop AirbnbのGithubのInstallationに導入方法が書かれている。
ただし、.rubocop.yml は公式Docに記載されている通りのままだと下記の現象が起きるため、対応が必要
.rubocop_todo.ymlが無いよと怒られる
公式docでは .rubocop.yml 作成時に .rubocop_todo.yml と .rubocop_airbnb.yml を inherit するように記載しているが前者はいらない。.rubocop_todo.ymlは「Rubocopでエラーとなっているが後で対応すること」を記載するファイルであり、必要になるまで不要。
rails newコマンド打ったばかりのコードに対して色々エラーが出る
configやdbなどのファイルに対してエラーが出る。特に問題ないはずなので下記に示した方法で除外する。vendorフォルダとかもチェックする必要ないので、状況に応じて除外対象に追加。
.rubocop.yml
inherit_from: - .rubocop_airbnb.yml AllCops: Exclude: - 'bin/*' - 'config/**/*' - 'db/**/*' - 'spec/spec_helper.rb'
rubocopの実行
bundle exec rubocop -R -D
-Rオプション
--railsの省略形で、railsに特化したCopが実行される。毎回付けるのが面倒な場合は、.rubocop.yml で下記のように設定すればOK
AllCops: RunRailsCops: true
-Dオプション
エラーメッセージにおいて、各Copの名称が表示されるようになる。デフォルトでtrueとのことなので付けなくても良いかも(未検証)
Rubocop実行時の様々なオプション(フラグ)
様々なオプションがあるので、下記における「Other useful command-line flags」で確認できる
Basic Usage - RuboCop: The Ruby Linter that Serves and Protects