Rails Diary

プログラミングの学習記録です。

PFメモ日記(3) railsコマンドが実行できないエラー

deviseを使おうとgemをインストールし、bundle exec rails g devise:installした際に下記のエラーが発生。

Calling DidYouMean::SPELL_CHECKERS.merge!(error_name => spell_checker)' has been deprecated. Please callDidYouMean.correct_error(error_name, spell_checker)' instead. You don't have net-smtp installed in your application. Please add it to your Gemfile and run bundle install /Users/ユーザー名/.rbenv/versions/3.1.2/lib/ruby/3.1.0/psych/visitors/to_ruby.rb:430:in `visit_Psych_Nodes_Alias': Unknown alias: default (Psych::BadAlias)

  • deviseに起因するエラーではない
  • 序盤に書いてあるDidYouMean::SPELL_CHECKRSruby3.1環境で出てくる警告文らしい
  • Rubyの3.3バージョンではDidYouMean::SPELL_CHECKRSの使用が非推奨になり、削除されることの注意書きであり、Ruby3.3以前を使用している分には特に支障はない

https://stackoverflow.com/questions/70800753/rails-calling-didyoumeanspell-checkers-mergeerror-name-spell-checker-h

thorというタスク実行のためのコマンドを作成するgemに起因する注意書きらしく、updateすればなくなる旨が記載されていた。

後半のエラーについて

You don't have net-smtp installed in your application. Please add it to your Gemfile and run bundle install /Users/ユーザー名/.rbenv/versions/3.1.2/lib/ruby/3.1.0/psych/visitors/to_ruby.rb:430:in `visit_Psych_Nodes_Alias': Unknown alias: default (Psych::BadAlias)

  • net-smtpがインストールされていないのでインストールする旨書かれている
    →これはメール機能に関するgemらしく、今は使用する予定がないので飛ばした。必要になったらインストールしてみる。

  • 色々調べてみるとrailsコマンドが使えないのは、visit_Psych_Nodes_Alias': Unknown alias: default (Psych::BadAlias)の部分に起因する何からし

  • psychというYAML解釈用のgemがあり、4系と3系で解釈法が変わったことによるエラーらしい
    → 3系でないとdatabase.ymlの解釈に失敗している

gemfile.lockを確認すると4系がインストールされていたのでgemfileにgem 'psych', ''~> 3.1を記載してbundle installし直すと解決した

他に試したこと

rails6.1.4以降で解決されているとのことで、gemfileのrailsバージョンを書き換え、bundle updateしてみたが変化なし

Psychとは

Ruby本体のdefault gemでYAMLライブラリのバックエンド実装になります。YAML自体がPsychに依存する形で実装されています。 Ruby の YAML.load が非互換になる(かもしれない) - Secret Garden(Instrumental)

参考にしたサイト

thor

【Ruby】thorの仕組みを調べてみた DSL編 - サーバーワークスエンジニアブログ

psychのエラーに関して

エラーUnknown alias: defaultが出て、railsサーバを起動できない

psych::badalias: unknown alias: defaultで Railsコマンドが使えないを解決 - Qiita

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