Rails 6 と Ruby 3 でrubocop が失敗する
概要
Rails 6.1.7.7 と Ruby 3.0.6p216 を使用して、手付かずの新しい Rails アプリ (rails new myapp) を作成しました。私は Sonoma 14.2 を実行している Apple M2 Pro を使用しています。
rubocop をインストールし、Gemfile に追加しました。
rvm @global do gem install rubocop
Bundle exec の有無にかかわらず、rubocop を実行しようとすると、エラーが発生します。 ロボコップが私の行く手にいる、
myapp % which rubocop
/Users/.../.rvm/gems/ruby-3.0.6/bin/rubocop
rubocop を実行すると再帰エラーが発生します (初期の Rails アプリで)
myapp % rubocop
/Users/.../.rvm/rubies/ruby-3.0.6/lib/ruby/3.0.0/psych/visitors/to_ruby.rb:128:in `visit_Psych_Nodes_Scalar': stack level too deep (SystemStackError)
from /Users/.../.rvm/rubies/ruby-3.0.6/lib/ruby/3.0.0/psych/visitors/visitor.rb:30:in `visit’
また、bundle exec を使用して:
myapp % bundle exec rubocop
bundler: failed to load command: rubocop (/Users/.../.rvm/gems/ruby-3.0.6/bin/rubocop)
/Users/.../.rvm/rubies/ruby-3.0.6/lib/ruby/3.0.0/psych/visitors/to_ruby.rb:52:in `deserialize': stack level too deep (SystemStackError)
from /Users/.../.rvm/rubies/ruby-3.0.6/lib/ruby/3.0.0/psych/visitors/to_ruby.rb:128:in `visit_Psych_Nodes_Scalar'
psych を削除しようとしましたが、デフォルトとみなされます。
myapp % gem uninstall psych
Gem psych-3.3.2 cannot be uninstalled because it is a default gem
アイデアがあれば大歓迎です。このエラーが新しい Rails アプリでも発生することを確認するために、コード内の再帰の問題を探すのに多くの時間を費やしました。もうコードの問題ではないと思います。
解決策
https://translate.google.com/translate?hl=ja&sl=en&tl=ja&u=https://github.com/rubocop/rubocop/issues/5118#issuecomment-346876567
これで問題が解決すると思います。すでに .rubocop.yml ファイルがある場合は、正確さを確認してこの yml ファイルを修正する必要があります。