9
7

【Rails】ついついrubocopを通し忘れてしまう全ての方へ!commitと同時に自動でrubocopを通す設定方法!

Last updated at Posted at 2023-10-03

はじめに

お疲れさまです!
おおくまです!

以前、私はrubocopを現在実装中のアプリに導入しました!
(その際の記事はこちら【Rails】rubocop導入手順の備忘録
しかし!
それからというもの、いつもたま〜にrubocopを通すのを忘れてしまいます!笑
そこで!
commitすると自動でrubocopを通してくれる便利な機能があることを知りました!
今回はその設定方法の備忘録になります!

環境

Ruby 3.2.2
Rails 7.0.8

注意点

私はプログラミング学習中で、初学者です。
内容に誤りがある場合があります。
コメント等で教えていただけると幸甚です。

実装

今回使用するツールは、lefthookというツールです!
これはGitフック管理ツールの1つで、特定のGitイベント(コミット前、プッシュ前、マージ前など)が発生したときに自動的に実行されるスクリプトやコマンドを管理してくれます!

ターミナル
brew install lefthook

まずはlefthookをインストールします!


ターミナル
lefthook install

次に設定したいアプリのディレクトリでこのコマンドを実行します!
このコマンドを実行すると、lefthook.ymlファイルが作成されます!


lefthook.yml
pre-commit:
  parallel: true
  commands:
    rubocop:
      run: bundle exec rubocop

今回は「commitと同時に自動でrubocopを通す」設定になるので、このように記述します!


ターミナル
lefthook add pre-commit

記述できたら、このコマンドでファイル内容を反映させます!


設定は以上になります!
動作確認をしてみましょう!

ターミナル
git commit -m "テスト"
╭──────────────────────────────────────╮
 🥊 lefthook v1.5.0  hook: pre-commit 
╰──────────────────────────────────────╯
  rubocop 

Inspecting 37 files
....C................................

Offenses:

app/controllers/application_controller.rb:1:1: C: [Correctable] Style/FrozenStringLiteralComment: Missing frozen string literal comment.
app/controllers/application_controller.rb:2:1: C: [Correctable] Layout/LeadingEmptyLines: Unnecessary blank line at the beginning of the source.
class ApplicationController < ActionController::Base
^^^^^

37 files inspected, 2 offenses detected, 2 offenses autocorrectable

  ────────────────────────────────────
summary: (done in 3.19 seconds)
🥊  rubocop

指摘があるとこのように表示されるみたいですね!
修正して、再度commitしてみます!


ターミナル
git commit -m "テスト"
╭──────────────────────────────────────╮
 🥊 lefthook v1.5.0  hook: pre-commit 
╰──────────────────────────────────────╯
sync hooks: ✔️ (pre-commit)
  rubocop 

Inspecting 37 files
.....................................

37 files inspected, no offenses detected

  ────────────────────────────────────
summary: (done in 3.19 seconds)
✔️  rubocop
[develop 32d39ad] rubocop自動実行の設定
 1 file changed, 5 insertions(+)
 create mode 100644 lefthook.yml

今度は何も指摘されませんでした!


これからはrubocopを通すことを忘れずに済みそうです!
最後まで読んでいただきありがとうございました!

9
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
7