Techioz Blog

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 ファイルを修正する必要があります。