開発環境
mac OS バージョン11.6
エディタ
VScode
やりたいこと
rails db:migrateやrails s -b 0.0.0.0などのrailsコマンドを実行しようとすると下記のエラーになる。
エラー内容
# rails db:migrate
Calling `DidYouMean::SPELL_CHECKERS.merge!(error_name => spell_checker)' has been deprecated. Please call `DidYouMean.correct_error(error_name, spell_checker)' instead.
Rails couldn't infer whether you are using multiple databases from your database.yml and can't generate the tasks for the non-primary databases. If you'd like to use this feature, please simplify your ERB.
rails aborted!
Psych::BadAlias: Unknown alias: default
# rails s -b 0.0.0.0
Calling `DidYouMean::SPELL_CHECKERS.merge!(error_name => spell_checker)' has been deprecated. Please call `DidYouMean.correct_error(error_name, spell_checker)' instead.
(省略)
/usr/local/lib/ruby/3.1.0/psych/visitors/to_ruby.rb:430:in `visit_Psych_Nodes_Alias': Unknown alias: default (Psych::BadAlias)
試したこと
まずはCalling `DidYouMean::SPELL_CHECKERS.merge!(error_name => spell_checker)' has been deprecated. Please call `DidYouMean.correct_error(error_name, spell_checker)' instead.
で検索をかける。
ま下記サイトをもとに
https://takagi.blog/thor-deprecation-warning-in-ruby-3-1/
# bundle update --bundlerCalling `DidYouMean::SPELL_CHECKERS.merge!(error_name => spell_checker)' has been deprecated. Please call `DidYouMean.correct_error(error_name, spell_checker)' instead.
(省略)
Bundle updated!
↓
(結果)変化なし
次に
gem 'thor'
を追加してbundle install
# bundle install
Calling `DidYouMean::SPELL_CHECKERS.merge!(error_name => spell_checker)' has been deprecated. Please call `DidYouMean.correct_error(error_name, spell_checker)' instead.
Fetching gem metadata from https://rubygems.org/...........
Resolving dependencies.........
(省略)
↓
(結果)変化なし
色々調べた結果、Calling `DidYouMean::SPELL_CHECKERS.merge!(error_name => spell_checker)' has been deprecated. Please call `DidYouMean.correct_error(error_name, spell_checker)' instead.
はRuby3.1環境で出てくる警告(warining)で、railsが動かないのとは関係がなさそう。
なのでここではとりあえずスルーする。
railsが動かない原因はpsych::badalias: unknown alias: default
にありそう。
原因
psych::badalias: unknown alias: default
で調べた結果、
psychというYAML解釈用のGemの4系と3系で解釈が変わっているのが原因らしい。
version違いで起きていたエラーみたいですね。
解決策
3系を使うように指示を出します。
gemfileに下記を追加
gem 'psych', '~> 3.1'
保存してbundle install
を実行
出来なければ bundle update
を実行
無事railsコマンドが使えるようになりました。
あとがき…waningを出なくさせる方法もわかったら記事に書いていきます。
参考
https://techracho15.rssing.com/chan-43028113/all_p53.html
https://qiita.com/kandalog/items/8fd20f79ecf73034795a