LoginSignup
10
5

More than 1 year has passed since last update.

Psych::BadAlias: Unknown alias: defaultというエラーの対処法

Posted at

開発環境
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

10
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
10
5