概要
rails new 後にはじめてrails sしようとしたら遭遇したエラー
環境
windows10
Rails 6.0.5.1
ruby 3.1.2p20
PS C:\Users\ml\rails_tutorial_2\hello> rails s
=> Booting Puma
=> Rails 6.0.5.1 application starting in development
=> Run rails server --help for more startup options
Exiting
C:/Ruby31-x64/lib/ruby/gems/3.1.0/gems/psych-4.0.4/lib/psych/visitors/to_ruby.rb:430:in visit_Psych_Nodes_Alias': Unknown alias: default (Psych::BadAlias) from C:/Ruby31-x64/lib/ruby/gems/3.1.0/gems/psych-4.0.4/lib/psych/visitors/visitor.rb:30:in visit'
from C:/Ruby31-x64/lib/ruby/gems/3.1.0/gems/psych-4.0.4/lib/psych/visitors/visitor.rb:6:in accept' from C:/Ruby31-x64/lib/ruby/gems/3.1.0/gems/psych-4.0.4/lib/psych/visitors/to_ruby.rb:35:in accept'
解決方法
gemfileに以下の記述を追加します。※バージョンは4より低いものを指定
gem 'psych', '~> 3.1'
そのうえで再度 rails sしたところ、無事にサーバが立ち上がりました。
原因について
psychはRuby 本体の default gemです。yamlはpsychに依存する形で書かれています。
psych 4.0 から YAML.loadが非互換になりました。それに起因して今回のエラーが起きたようです。
そのため、古いバージョンを指定することで対応できます。もちろん、最新バージョンを利用したうえで対応するのが理想的ではありますが。
参考
大変お世話になりました。ありがとうございます。
https://github.com/ruby/psych/pull/487
https://stackoverflow.com/questions/71191685/visit-psych-nodes-alias-unknown-alias-default-psychbadalias