🍉

【Rails7】rubocopとlintチェックの導入についてまとめました。

2024/07/17に公開

はじめに

もなかと申します。
プログラミング初心者でRuby on Railsをメインに勉強しています。
今回はアプリ開発時のrubocopとerb-lintの導入時につまづくことがありました。参考記事通りにいかない部分があったので、後から自分でも確認ができるようにまとめることにしました。
内容につきまして、間違いや不備がありましたらコメントで教えてください。

参考資料

https://zenn.dev/junara/articles/efa04ce1ab02c9
https://github.com/Shopify/erb-lint

開発環境

Ruby 3.2.2
Rails 7.0.8

rubocopの導入

  gem 'rubocop'
  gem 'rubocop-ast'
  gem 'rubocop-performance'
  gem 'rubocop-rails'
  gem 'rubocop-rake'
  gem 'rubocop-rspec'
bundle install

その後、.rubocop.ymlを作成。

.rubocop.yml
inherit_from: .rubocop_todo.yml

Style/AsciiComments:
  Enabled: false

Style/Documentation:
  Enabled: false

AllCops:
  TargetRubyVersion: 3.1
  NewCops: enable

Rails/BulkChangeTable:
  Enabled: false

require:
  - rubocop-ast
  - rubocop-rails
  - rubocop-rake
  - rubocop-rspec
  - rubocop-performance

Rails/BulkChangeTable:の部分は参考記事には書かれていませんでした。しかし、RuboCopにおけるルールではマイグレーションファイルを検査している際にエラーが起きていたため、問題の箇所を無効化しました。

.rubocop_todo.ymlファイルを空のまま作成。

.rubocop_todo.yml

rubocopの実施。-aをつけることで自動修正。

bundle exec rubocop -a

rubocopと連動したerb-lintを導入。

gem 'erb_lint'
bundle install

.erb-lint.ymlファイルの作成。
rubocopも適用されるようにするために下記のコードを加えます。

.erb-lint.yml
exclude:
  - '**/vendor/**/*'
  - '**/node_modules/**/*'

EnableDefaultLinters: true
linters:
  Rubocop:
    enabled: true
    rubocop_config:
      inherit_from:
        - .rubocop.yml
      Style/FrozenStringLiteralComment:
        Enabled: false
      Layout/InitialIndentation:
        Enabled: false
      Layout/TrailingEmptyLines:
        Enabled: false

ERBファイルの自動修正。

erblint --lint-all -a

最後に

最後まで読んでいただき、ありがとうございました。
参考記事のようにGithub Actionsに反映させることもできました。実装方法は参考記事を参照してください。

Discussion