RuboCopを導入してみる
RuboCopでフォーマットしてみたのでメモ。
触りだけだと、思っていたより簡単に出来た。
RuboCopとは?
rubyのコードフォーマットしてくれるgem
インストール
group :development do gem 'rubocop', require: false end
設定ファイルを作成 & 編集
.rubocop.yml
というファイルをルートディレクトリ配下に作成- ここにフォーマットの設定を記載する
# 日本語でのコメントを許可 AsciiComments: Enabled: false # 対象ファイル AllCops: Exclude: - './**' - './bin/**' Include: - 'app/controllers/**' - 'app/model/**' - 'app/serializers/**' - 'test/controllers/**' Rails: Enabled: true
- ためしに何も設定せずに実行したらどんでもない量のファイルがフォーマットされそうになったため、一旦全てを対象外にした後、今回キレイにしたいファイルだけを対象に。
実行
rubocop
- ターミナル上にフォーマット箇所と対象のファイルが表示される
rubocop --auto-correct
- 自動でフォーマットしてくれる
pre-commitでコミット時に毎回フォーマットを実行する
pre-commitファイルの作成
docker-compose run web pre-commit install
.git/hooks/pre-commit
が生成される
シェルスクリプトの変更
今回ついでにrspecも実行されるようにしました。
#!/usr/bin/env sh echo "rspec実行中" # rspec実行 docker-compose run web rspec rspec_result=$? if [ $rspec_result -ne 0 ]; then echo "rspec失敗" exit 1 fi echo "rspec成功" echo "rubocop実行中" # rubocop実行 docker-compose run web rubocop -A rubocop_result=$? if [ $rubocop_result -ne 0 ]; then echo "rubocop失敗" exit 1 fi echo "rubocop成功" exit 0
- rubocopの
-A
オプションをつける事で自動整形までやってくれます(ただし全て対応してくれるわけではない)
bashで変数の中のコマンドを実行 | Opentone Labs.
初心者向けシェルスクリプトの基本コマンドの紹介 - Qiita
参考資料
【Ruby on Rails】rubocop と pre-commit を利用して git commit 時にコーディングチェックを行う - きゃまなかのブログ