1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

RailsチュートリアルにRubocopを導入

Posted at

こんにちは!学びと成長しくみデザイン研究所の斉藤です。
本記事はRailsチュートリアルの第14章が終わった段階のリポジトリをベースにして、より実践的なものへカスタマイズしていきます。

前回から引き続き、今回は RuboCop を導入します。
RuboCop を導入することでコード整形が自動化され、作業効率が向上します。
※ RuboCop の概要については公式サイトをご確認ください: https://docs.rubocop.org/rubocop/index.html#overview

導入手順

RuboCop の導入

Gemfileへ追加

開発環境に限定してRuboCopを導入します。
※ Rails起動時(bin/rails s)した際にはRuboCopの gem を require する必要が無いため、require: false を指定します。

Gemfile
group :development do
  gem 'rubocop', '1.62.1', require: false
  gem 'rubocop-performance', '1.21.0', require: false
  gem 'rubocop-rails', '2.24.1', require: false
  # 以下省略
end

ライブラリのインストール

※ ちなみに bundle installbundle に省略可能です。

bundle

RuboCopによる自動修正1

RuboCopを使ってコードの自動修正を行います。
まずは安全な自動修正から

bundle exec rubocop -a

念の為、修正された箇所が正常に動作するか確認します。

bin/rails test

テストが通ったのでgitでコミット

RuboCop の設定ファイル作成

プロジェクト直下に rubocop の設定ファイルを作成

.rubocop.yml
require:
  - rubocop-rails
  - rubocop-performance

AllCops:
  NewCops: enable
  TargetRubyVersion: 3.2
  Exclude:
    - 'node_modules/**/*'
    - 'vendor/**/*'
    - 'bin/**/*'
    - 'config/**/*'
    - 'db/**/*'
    - 'tmp/**/*'
    - 'Guardfile'

# 日本語のコメントを許可する
Style/AsciiComments:
  Enabled: false

# class,moduleのドキュメントは必須にしない
Style/Documentation:
  Enabled: false

RuboCopによる自動修正2

次に、より多くの自動修正を行うオプションを使用しますが、この際には修正後の動作を十分に確認してください。
(今回の場合は単体テストが整備されているのでテストが通れば問題ありません)

bundle exec rubocop -A

再度、bin/rails test を実行して、問題なければgitコミットします。

自動修正されなかった箇所を修正

bundle exec rubocop を実行すると、いくつか C (Convention)が表示されるため、内容に従って修正します。
修正後はまたテストを実行してください。

さいごに

今後、bundle exec rubocop を実行した際、警告やエラーが表示された箇所を修正することで、
プロジェクト全体として一貫したコードフォーマットを維持することができます。

VSCode上でRuboCopを実行する設定

エディタ上でRuboCopを実行することにより、リアルタイムにフォーマットが適用され作業効率が上がります。

  1. RuboCop の拡張機能をインストール

    以下を開いて Install ボタンを押します。
    https://marketplace.visualstudio.com/items?itemName=rubocop.vscode-rubocop

  2. VSCode上でRuboCopの設定

    VSCodeの settings.json を開いて以下を追記することで、
    ファイルを保存した際にRuboCopのフォーマットを自動適用します。

    settings.json
    "[ruby]": {
      "editor.formatOnSave": true,
      "editor.defaultFormatter": "rubocop.vscode-rubocop"
    }
    
1
1
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
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?