- 既存のRailsプロジェクトにrubocopを導入する
- rubocopをチームで活用する・・・GitHub Actionsでrubocop自動でチェックする
- 前準備
- rubocop導入
- GitHub Actionsでrubocop
- ruby
- railsプロジェクト
gh repo create hogehoge
bundle init
# frozen_string_literal: true
source "https://rubygems.org"
git_source(:github) {|repo_name| "https://github.com/#{repo_name}" }
gem "rails"
bundle install
- 最小限のオプションでrailsをインストールする
rails new . --database=sqlite3 --minimal
動作確認する
rails s
https://github.com/rubocop/rubocop https://github.com/rubocop/rubocop-rails https://github.com/rubocop/rubocop-performance
group :development do
gem 'listen', '~> 3.3'
gem 'rubocop', require: false
gem 'rubocop-rails', require: false
gem 'rubocop-performance', require: false
end
bundle install
動作確認する
rubocop
rubocop --init
Style/AsciiComments:
Enabled: false
Style/Documentation:
Enabled: false
Style/ClassAndModuleChildren:
Enabled: false
Style/FrozenStringLiteralComment:
Enabled: false
Rails/UniqueValidationWithoutIndex:
Enabled: false
Metrics/ClassLength:
Enabled: false
Metrics/ModuleLength:
Enabled: false
require:
- rubocop-rails
- rubocop-performance
Rails/Delegate:
Enabled: false
AllCops:
TargetRubyVersion: 3.0 # rubyのバージョン
NewCops: enable # rubocopの新機能をactiveにする
Exclude:
- 'Gemfile'
- 'log/**/*'
- 'spec/**/*'
- 'vendor/**/*'
- 'tmp/**/*'
- 'db/**/*'
- 'bin/**/*'
- 'assets/**/*'
- 'node_modules/**/*'
安全ななものを自動的に修正する
rubocop -a
(option)デグレする可能性があるが自動的に直るモノを実行する
rubocop -A
あとは、 以下のコマンドで指摘箇所を地道に直す or 以下のコマンドで課題をとりあえず無視する(TODOにする)
rubocop --auto-gen-config
rubocop.ymlの一行目に下記を追加する。
inherit_from: .rubocop_todo.yml (rubocop_todoがあるならこれをアクティブにする)
https://docs.github.com/ja/actions/guides/building-and-testing-ruby#introduction
.github/workflows/rspec.yml ファイルを追加して編集する
mkdir -p .github/workflows
touch .github/workflows/rubocop.yml
pull requestの時に必ずrubocopが実行されるようにするgithub actions
on: [pull_request] # プルリクエスト時のみに動かす
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Rubyをセットアップ
uses: ruby/setup-ruby@v1
with:
ruby-version: 3.0
- name: Gemをインストールする
run: bundle install
- name: Rubocopを実行してチェックする
run: bundle exec rubocop
上記のコードがコミットされるとpull request時に github actionsが自動的にrubocopのチェックをしてくれるようになる。 これにより、レビュワーのコードチェックの手間がかなりらくになる。
- rspecのgithub actionsを書く
- bundle installをキャッシュする