- 記事の内容
- Rubocopとは、Rubyのコードを自動修正してくれるフォーマッター
- インストール方法
- Rails本家が採用している設定を自分にも設定する
- 失敗したやり方
- rubocopの基本的な使い方
- 関連記事
- 参照
記事の内容
- Rubocopのインストール方法
- Rails本家が採用している設定を自分にも設定する(要するにパクる)
Rubocopとは、Rubyのコードを自動修正してくれるフォーマッター
Rubocopとは、自分が書いたRubyコードを「おい、ここアカンのちゃうか?」「はいー、ここダメダメやん、直してや」といってくれるようなgem(ライブラリ)のこと。ちなみにヤングなジェネレーションは知らないかもしれないが、これは映画「ロボコップ」をインスピレーションにしている。絶対。
なお本家サイトにはこう書いてある。
RuboCop is a Ruby static code analyzer (a.k.a. linter) and code formatter. Out of the box it will enforce many of the guidelines outlined in the community Ruby Style Guide.
大阪弁に意訳すると、
「RubocopはRubyの静的コードを解析したり、修正してくれるスグレモンや。linterともいうで。Rubyコミュニティで規約されてるRubyスタイルガイドに沿ってるねんで。」
※Rubyスタイルガイド:Rubyコミュニティ界隈で採用されてるコーディングの決まりごと。
インストール方法
環境
gem install する場合
次のコマンドでrubocopをインストール。
gem install rubocop gem install rubocop-performance gem install rubocop-rails
基本的にはgem install rubocop
だけでも使えるが、Rails本家の設定を使うためにrubocop-performance
とrubocop-rails
もインストールしている。
あとはこれで、
rubocop
を実行すれば、ディレクトリに存在するrubyファイル(.rb
で終わるファイル)はすべて解析してくれて、次のような指摘をしてくれる。
11 files inspected, 42 offenses detected
→ 「11個のファイルを覗かせてもらったで。42個の指摘があるねんけど」
42個も・・・!?
bundlerでインストールする場合
bundlerでインストールする場合。 適当にディレクトリを作成し、
bundle init
でGemfileを作成。 Gemfileに以下を追記。
gem 'rubocop' gem 'rubocop-performance' gem 'rubocop-rails'
Railsプロジェクトで使うなら
group :development do gem 'rubocop', require: false gem 'rubocop-performance' gem 'rubocop-rails' end
そしてインストール
bundle install
※bundle install --path=vendor/bundle
にするかは各自のお好みで。
なお、bundlerでインストールしたgemを実行するとき、文頭にbundle exec
をつけないと実行されないので注意。
bundle exec rubocop
これでrubocopが動き、ファイルをチェックしてくれる。
Rails本家が採用している設定を自分にも設定する
まず、vim
やtouch
などで.rubocop.yml
を作成する。
ファイルはルートディレクトリに作成すればOK。
touch .rubocop.yml
次に、以下リンクからありがたく設定ファイルをコピらせていただく。
自分で作成した.rubocop.yml
に、上記ページからコピったものを貼り付ける。
これでRails本家の設定でrubocopを使うことができる。
試しに自動修正してもらう
試しにrubocopに自動で修正してもらう。
bundle exec rubocop --auto-correct
失敗したやり方
自分が失敗した方法もシェアしておく。
問題
rubocop
を実行してもエラーになり、rubocopが実行されなかった。 次のようなエラーメッセージが出た。
cannot load such file -- rubocop-performance
や
cannot load such file -- rubocop-rails
など。
これは、
- rubocop-performanceなんてファイルないよ!
- rubocop-railsなんてファイルないぞコノヤロー
と指摘されている。
原因
原因は、rubocop-performance
とrubocop-rails
をインストールしていなかったから。
本家ファイルの上部を見るとこんな記載がある。
require: - rubocop-performance - rubocop-rails
解決
必要なgemをインストールする。
gem install
を使うなら。
gem install rubocop-performance gem install rubocop-rails
bundlerならGemfileに以下を追記。
gem 'rubocop-performance' gem 'rubocop-rails'
これで解決し、rubocopが動いた。
rubocopの基本的な使い方
# 引数を指定しない場合 rubocop bundle exec rubocop
ファイル指定をしてrubocopを通す。
# 引数にファイル名を指定する場合 rubocop <ファイル名> bundle exec rubocop <ファイル名>
自動である程度修正してもらう。
rubocop --auto-correct bundle exec rubocop --auto-correct
なんて便利な!