Rails new時の環境構築時エラー(Psych::BadAlias: Unknown alias: default)

発生している問題

  • rails *6.0.3.6* new プロジェクト名コマンドを実行後、rails aborted! Psych::BadAlias: Unknown alias: defaultのエラーが出現しました。

      $ rails _6.0.3.6_ new プロジェクト名
      ~省略~
      rails aborted!
      Psych::BadAlias: Unknown alias: default
      /Users/name/workspace/practice_app/プロジェクト名/bin/rails:9:in `<top (required)>'
      /Users/name/workspace/practice_app/プロジェクト名/bin/spring:15:in `require'
      /Users/name/workspace/practice_app/プロジェクト名/bin/spring:15:in `<top (required)>'
      ./bin/rails:3:in `load'
      ./bin/rails:3:in `<main>'
      Tasks: TOP => app:template
      (See full trace by running task with --trace)
    
  • lsコマンドで、フォルダが作成できているのかを確認したところRails newしたフォルダは問題なく作成出来ていました。

      $ ls
      プロジェクト名のフォルダ
    
  • その後、試しにRailsサーバーが立ち上がるかコマンドを実行してみました。すると、gem 'psych (~> 3.1)'が見つかりませんというエラーが出現しました。確認すると、gemfileには、psychというgemはありませんでした。

      $ rails s
      Could not find gem 'psych (~> 3.1)' in locally installed gems.
    
      The source contains the following gems matching 'psych':
        * psych-4.0.3
      Run `bundle install` to install missing gems.
    
  • 調べてみますと、Rubyには標準でpsychというYAML解釈用のGemがあります。
    しかし、4系列では解釈法が変わった(Psych.loadが内部でPsych.safe_loadを使用するように変更した)ため、今まで読み込むことができていたYAMLファイルが今後読み込みエラーになる可能性があるということです。3系列でないとdatabase.ymlの解釈に失敗することが考えられます。
    つまり、'psych (~> 3.1)'を使いましょうというエラーだったんですね。

    Ruby の YAML.load が非互換になる(かもしれない) - Secret Garden(Instrumental)

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

解決法

  1. gemfileにgem 'psych', '~> 3.1’を追加後、bundle install

     # gemfile
     gem 'psych', '~> 3.1'
    

    実行後、

     $ bundle install
    
     ~省略~
     Installing psych 3.3.2 with native extensions
     Bundle complete! 18 Gemfile dependencies, 76 gems now installed.
     Use `bundle info [gemname]` to see where a bundled gem is installed.
    

    gem 'psych', '~> 3.1’を無事インストールできました。

  2. Railsサーバーを立ち上げると、上手く立ち上がりました!

     $ rails s
     => Booting Puma
     => Rails 6.0.4.7 application starting in development 
     => Run `rails server --help` for more startup options
     Puma starting in single mode...
     * Version 4.3.11 (ruby 3.1.1-p18), codename: Mysterious Traveller
     * Min threads: 5, max threads: 5
     * Environment: development
     * Listening on tcp://127.0.0.1:3000
     * Listening on tcp://[::1]:3000
    

参考

Ruby の YAML.load が非互換になる(かもしれない) - Secret Garden(Instrumental)

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

週刊Railsウォッチ(20210518後編)RubyのGCを深掘りする、Psych gemのbreaking change、11月のRubyConf 2021ほか|TechRacho by BPS株式会社

補足情報(フレームワークのバージョン・OS)