既存のRailsアプリへのRuboCopの導入 258 views Post @wakairo 06 Dec, 2024 05:28 +00:00 Last edited 06 Dec, 2024 08:18 +00:00 Rails 7.2からRuboCopが新規アプリケーションでデフォルトで有効になりました。 このTopicでは、7.1以前で作成した既存RailsアプリにRuboCopを後から導入して、RuboCopに関して7.2の新規アプリ相当の状態にセットアップする方法をご紹介します。 RuboCop (Omakase Ruby styling for Rails) のインストール 基本的にはrubocop-rails-omakaseの公式ドキュメントのインストール手順に従います。 まず以下のように、Gemfileのgroup :development, :testのところにrubocop-rails-omakaseを追加します。 group :development, :test do # Omakase Ruby styling [https://github.com/rails/rubocop-rails-omakase/] gem "rubocop-rails-omakase", require: false end 次にbundle installを実行して、RuboCop等をインストールします。 bundle install さらに、必須ではありませんが、bin/rubocopでRuboCopを実行できるように、以下のコマンドを実行します。 bundle binstubs rubocop 最後に.rubocop.ymlという名前でファイルを作成し、以下の内容を記述します。 # Omakase Ruby styling for Rails inherit_gem: rubocop-rails-omakase: rubocop.yml 以上でRuboCop (Omakase Ruby styling for Rails) のセットアップが出来ました。 ローカル環境でのbin/rubocopの実行とその結果に対する対応の進め方 以下のコマンドでbin/rubocopを実行でき、omakaseのチェックを行えます。 bin/rubocop このチェックでの指摘事項が多かった場合、以下のオプションを付けて実行することで、 無視設定を記述した.rubocop_todo.ymlというファイルが作成され、 .rubocop.ymlにもこの無視ファイルを参照する設定が追加されますので、 とりあえず全ての指摘事項を無視するように設定が出来ます。 bin/rubocop --auto-gen-config 設定が出来たら、bin/rubocopを実行して、とりあえず指摘事項の数が0となることを確認します。 1つずつ指摘事項へ対応 ここから先は、以下の手順を繰り返します。 .rubocop_todo.ymlから1項目を削除 bin/rubocopを実行して指摘内容を確認して対応 bin/rubocop -aもしくはbin/rubocop -Aを実行して自動修正できるものは自動修正し、その修正内容で問題ないことを確認 -aは安全なもののみ、-Aは安全で無いものも含めて自動修正を行います。 自動修正できなかったものは手作業で修正・確認 特定のファイルのみチェックを回避する場合は、.rubocop.ymlにてExclude:を用いて設定 ソースコードの特定の箇所(行)のみチェックを回避する場合は、ソースファイルのコメントに# rubocop:disable等を用いて設定 指摘内容に対応する規則を完全に採用しない場合には、.rubocop.ymlにてEnabled: falseの記述を用いて規則を無効にする 1項目ずつ対応を進め、.rubocop_todo.ymlの中身が無くなったら、.rubocop_todo.ymlを削除すると共に、.rubocop.yml内で.rubocop_todo.ymlを参照している設定を削除します。ここまで終わればRuboCopの諸規則への対応は完了となります。お疲れ様でした。 GitHubワークフロー(CI)でのrubocopの実行 .github/workflows/ci.ymlに相当するファイルがなければ作成します。 この.ymlファイルを編集して、以下のようにjobsの下にlintジョブを追加します。 注意点 timeout-minutes:の設定は、実行時間に対して十分余裕を持たせて下さい。 ruby-version: .ruby-versionという設定は、プロジェクトルートにある.ruby-versionという名前のファイルで指定されているrubyのバージョンという意味になります。この設定について詳しくはこちらのTopicをご覧下さい。 -f githubオプションは、出力フォーマットをGitHub Actionsに適したものにするオプションです。 jobs: lint: runs-on: ubuntu-latest timeout-minutes: 10 steps: - name: Checkout code uses: actions/checkout@v4 - name: Set up Ruby uses: ruby/setup-ruby@v1 with: ruby-version: .ruby-version bundler-cache: true - name: Lint code for consistent style run: bin/rubocop -f github 公式情報 RuboCopのその他の詳細についてはRuboCop公式ドキュメントをご覧ください。 Omakase Ruby styling for RailsのRuboCop設定の最新の内容はGitHubで確認出来ます。なお、最新ではなくインストールしたバージョンのRuboCop設定内容をご覧になりたい場合は、GitHubの操作でTagsから当該バージョンを選択するようにして下さい。 Write Preview How to write in Markdown
@wakairo 06 Dec, 2024 05:28 +00:00 Last edited 06 Dec, 2024 08:18 +00:00 Rails 7.2からRuboCopが新規アプリケーションでデフォルトで有効になりました。 このTopicでは、7.1以前で作成した既存RailsアプリにRuboCopを後から導入して、RuboCopに関して7.2の新規アプリ相当の状態にセットアップする方法をご紹介します。 RuboCop (Omakase Ruby styling for Rails) のインストール 基本的にはrubocop-rails-omakaseの公式ドキュメントのインストール手順に従います。 まず以下のように、Gemfileのgroup :development, :testのところにrubocop-rails-omakaseを追加します。 group :development, :test do # Omakase Ruby styling [https://github.com/rails/rubocop-rails-omakase/] gem "rubocop-rails-omakase", require: false end 次にbundle installを実行して、RuboCop等をインストールします。 bundle install さらに、必須ではありませんが、bin/rubocopでRuboCopを実行できるように、以下のコマンドを実行します。 bundle binstubs rubocop 最後に.rubocop.ymlという名前でファイルを作成し、以下の内容を記述します。 # Omakase Ruby styling for Rails inherit_gem: rubocop-rails-omakase: rubocop.yml 以上でRuboCop (Omakase Ruby styling for Rails) のセットアップが出来ました。 ローカル環境でのbin/rubocopの実行とその結果に対する対応の進め方 以下のコマンドでbin/rubocopを実行でき、omakaseのチェックを行えます。 bin/rubocop このチェックでの指摘事項が多かった場合、以下のオプションを付けて実行することで、 無視設定を記述した.rubocop_todo.ymlというファイルが作成され、 .rubocop.ymlにもこの無視ファイルを参照する設定が追加されますので、 とりあえず全ての指摘事項を無視するように設定が出来ます。 bin/rubocop --auto-gen-config 設定が出来たら、bin/rubocopを実行して、とりあえず指摘事項の数が0となることを確認します。 1つずつ指摘事項へ対応 ここから先は、以下の手順を繰り返します。 .rubocop_todo.ymlから1項目を削除 bin/rubocopを実行して指摘内容を確認して対応 bin/rubocop -aもしくはbin/rubocop -Aを実行して自動修正できるものは自動修正し、その修正内容で問題ないことを確認 -aは安全なもののみ、-Aは安全で無いものも含めて自動修正を行います。 自動修正できなかったものは手作業で修正・確認 特定のファイルのみチェックを回避する場合は、.rubocop.ymlにてExclude:を用いて設定 ソースコードの特定の箇所(行)のみチェックを回避する場合は、ソースファイルのコメントに# rubocop:disable等を用いて設定 指摘内容に対応する規則を完全に採用しない場合には、.rubocop.ymlにてEnabled: falseの記述を用いて規則を無効にする 1項目ずつ対応を進め、.rubocop_todo.ymlの中身が無くなったら、.rubocop_todo.ymlを削除すると共に、.rubocop.yml内で.rubocop_todo.ymlを参照している設定を削除します。ここまで終わればRuboCopの諸規則への対応は完了となります。お疲れ様でした。 GitHubワークフロー(CI)でのrubocopの実行 .github/workflows/ci.ymlに相当するファイルがなければ作成します。 この.ymlファイルを編集して、以下のようにjobsの下にlintジョブを追加します。 注意点 timeout-minutes:の設定は、実行時間に対して十分余裕を持たせて下さい。 ruby-version: .ruby-versionという設定は、プロジェクトルートにある.ruby-versionという名前のファイルで指定されているrubyのバージョンという意味になります。この設定について詳しくはこちらのTopicをご覧下さい。 -f githubオプションは、出力フォーマットをGitHub Actionsに適したものにするオプションです。 jobs: lint: runs-on: ubuntu-latest timeout-minutes: 10 steps: - name: Checkout code uses: actions/checkout@v4 - name: Set up Ruby uses: ruby/setup-ruby@v1 with: ruby-version: .ruby-version bundler-cache: true - name: Lint code for consistent style run: bin/rubocop -f github 公式情報 RuboCopのその他の詳細についてはRuboCop公式ドキュメントをご覧ください。 Omakase Ruby styling for RailsのRuboCop設定の最新の内容はGitHubで確認出来ます。なお、最新ではなくインストールしたバージョンのRuboCop設定内容をご覧になりたい場合は、GitHubの操作でTagsから当該バージョンを選択するようにして下さい。
Rails 7.2からRuboCopが新規アプリケーションでデフォルトで有効になりました。 このTopicでは、7.1以前で作成した既存RailsアプリにRuboCopを後から導入して、RuboCopに関して7.2の新規アプリ相当の状態にセットアップする方法をご紹介します。
RuboCop (Omakase Ruby styling for Rails) のインストール
基本的にはrubocop-rails-omakaseの公式ドキュメントのインストール手順に従います。
まず以下のように、Gemfileの
group :development, :test
のところにrubocop-rails-omakaseを追加します。次に
bundle install
を実行して、RuboCop等をインストールします。さらに、必須ではありませんが、
bin/rubocop
でRuboCopを実行できるように、以下のコマンドを実行します。最後に
.rubocop.yml
という名前でファイルを作成し、以下の内容を記述します。以上でRuboCop (Omakase Ruby styling for Rails) のセットアップが出来ました。
ローカル環境でのbin/rubocopの実行とその結果に対する対応の進め方
以下のコマンドでbin/rubocopを実行でき、omakaseのチェックを行えます。
このチェックでの指摘事項が多かった場合、以下のオプションを付けて実行することで、 無視設定を記述した
.rubocop_todo.yml
というファイルが作成され、.rubocop.yml
にもこの無視ファイルを参照する設定が追加されますので、 とりあえず全ての指摘事項を無視するように設定が出来ます。設定が出来たら、
bin/rubocop
を実行して、とりあえず指摘事項の数が0となることを確認します。1つずつ指摘事項へ対応
ここから先は、以下の手順を繰り返します。
.rubocop_todo.yml
から1項目を削除bin/rubocop
を実行して指摘内容を確認して対応bin/rubocop -a
もしくはbin/rubocop -A
を実行して自動修正できるものは自動修正し、その修正内容で問題ないことを確認-a
は安全なもののみ、-A
は安全で無いものも含めて自動修正を行います。.rubocop.yml
にてExclude:
を用いて設定# rubocop:disable
等を用いて設定.rubocop.yml
にてEnabled: false
の記述を用いて規則を無効にする1項目ずつ対応を進め、
.rubocop_todo.yml
の中身が無くなったら、.rubocop_todo.yml
を削除すると共に、.rubocop.yml
内で.rubocop_todo.yml
を参照している設定を削除します。ここまで終わればRuboCopの諸規則への対応は完了となります。お疲れ様でした。GitHubワークフロー(CI)でのrubocopの実行
.github/workflows/ci.ymlに相当するファイルがなければ作成します。 この.ymlファイルを編集して、以下のようにjobsの下にlintジョブを追加します。
注意点
timeout-minutes:
の設定は、実行時間に対して十分余裕を持たせて下さい。ruby-version: .ruby-version
という設定は、プロジェクトルートにある.ruby-versionという名前のファイルで指定されているrubyのバージョンという意味になります。この設定について詳しくはこちらのTopicをご覧下さい。-f github
オプションは、出力フォーマットをGitHub Actionsに適したものにするオプションです。公式情報