SideCI Blog

自動コードレビューサービスSideCIを提供している株式会社アクトキャットのコーポレートブログです。



Railsを書き始めたばかりの人に特にオススメ。Rails流のコードの書き方を教えてくれる rails_best_practices を使ってみましょう

Ruby on Rails を使ったシステム開発では The Rails way や Rails 流と言った開発手法に沿って行うことで高い生産性を保持できるようになります。つまり流儀をきちんと学び、それに従って開発するのが大事です。

そうした流儀、ベストプラクティスをチェックできるツールが rails_best_practices になります。単に文章などで読むだけでなく、コードを静的解析して指摘するツールを使うことで、何が間違っていてどう書くべきなのかがはっきりと分かるようになるでしょう。

rails_best_practices のインストール

rails_best_practices のインストールは Rubygems を使って行えます。

$ gem install rails_best_practices

または Rails プロジェクトの Gemfile に記述してインストールもできます。

rails_best_practicesの使い方

rails_best_practices をインストールすると rails_best_practices コマンドが使えるようになります。実行時に Rails プロジェクトのパスを渡すだけです。

$ rails_best_practices .
Source Code: |====================================================================================================|
/path/to/rails/project/db/schema.rb:16 - always add db index (bots => [user_id])
/path/to/rails/project/db/schema.rb:80 - always add db index (temporary_tokens => [bot_id])
/path/to/rails/project/app/controllers/bots_controller.rb:18 - move model logic into model (Resque use_count > 4)
/path/to/rails/project/app/helpers/user_sessions_helper.rb:1 - remove empty helpers
/path/to/rails/project/app/helpers/application_helper.rb:2 - remove unused methods (ApplicationHelper#get_bot_site)
/path/to/rails/project/app/models/chat_log.rb:19 - remove unused methods (ChatLog#slack_demo)

後はこの指摘に沿って修正していくだけです。 上記の一例の場合には、データベースへのインデックスのつけ忘れや、RailsではロジックはControllerではなくModelに書きましょう、使っていないメソッドや使っていないhelperファイルを削除しましょうといった事が示されています。

デフォルトは標準出力ですが、他のフォーマットで出力する場合は -f (フォーマット指定)、 --output-file (出力先ファイル名) を使います。

$ rails_best_practices -f html --output-file result.html

f:id:a_nakatsugawa:20170629161205p:plain

さらに GitやHgと連携してコミットIDやコーダーの名前を出力することもできます。これでより分かりやすくなるでしょう。

$ rails_best_practices --with-git -f html --output-file result.html

f:id:a_nakatsugawa:20170629161215p:plain

その他のオプション

特定のディレクトリを除く場合は -e オプションを使います。複数ディレクトリある場合はカンマ繋ぎになります。

$ rails_best_practices -e "db/migrate,vendor" .

test ディレクトリを含める場合は --test 、spec ディレクトリは --spec 、 vendor ディレクトリは --vendor 、そして features ディレクトリは --features をそれぞれ指定します。

設定ファイルを作成する

デフォルトの設定ファイルのパスは config/rails_best_practices.yml になります。まず最初は -g を付けてベースになるファイルを生成するのが良いでしょう。

$ rails_best_practices -g

そうすると以下のような YAML ファイルが生成されます。

AddModelVirtualAttributeCheck: { }
AlwaysAddDbIndexCheck: { }
#CheckSaveReturnValueCheck: { }
#CheckDestroyReturnValueCheck: { }
DefaultScopeIsEvilCheck: { }
  :

例えばスペースや空白行に関する警告を出さないようにしたい場合は次のような設定を追加します。

RemoveTrailingWhitespaceCheck: { ignored_files: '*' }

rails_best_practices が指摘する内容は Rails Best Practices - Rails Best Practices に記事として書かれています。コードの変更前、変更後も書かれているので、分かりやすいはずです。rails_best_practices によって指摘された内容をサイトの記事でチェックして修正していくことで、より Rails らしい書き方ができるようになるでしょう。

SideCI の自動コードレビューでは rails_best_practices にも対応しています。個人であればローカルに rails_best_practices をインストールすれば良いでしょうが、チームでの開発体制ではクラウドでチェックする方が効率的かつプロジェクト全体のコード品質向上につながるはずです。ぜひご利用ください。

SideCIでは無料トライアルも可能です。ぜひ皆さんのRailsプロジェクトで試してみてください