Rails 5.2.0.rc1でdevise 4.4.1を利用としたら以下のようなエラーが発生した。
$ bin/rails db:migrate rails aborted! Devise.secret_key was not set. Please add the following to your Devise initializer: config.secret_key = '998631ea6a17156d9b2c957614c720b11e0e65d5217e7126eb39cd08de9cad06c61eb526bd055e6eab6f5d433d8effefea0ec30829f5359cef8cc4a6503e9fe9' Please ensure you restarted your application after installing Devise or setting the key. /Users/kotamiyake/code/private/projects/xxx/config/routes.rb:2:in `block in <main>' /Users/kotamiyake/code/private/projects/xxx/config/routes.rb:1:in `<main>' /Users/kotamiyake/code/private/projects/xxx/config/environment.rb:5:in `<main>' /Users/kotamiyake/code/private/projects/xxx/bin/rails:9:in `<top (required)>' /Users/kotamiyake/code/private/projects/xxx/bin/spring:15:in `<top (required)>' bin/rails:3:in `load' bin/rails:3:in `<main>' Tasks: TOP => db:migrate => db:load_config => environment (See full trace by running task with --trace)
原因はRails5.2から複数の機密情報設定ファイルがconfig/credentials.yml.encにまとめられたので、それに伴ってnamespaceが代わってdeviseのキー設定がうまく行かなくなっていました。
masterでは修正されているようですが、deviseの4.4.1ではまだ反映されていないので、以下のように設定するとエラーを修正することができます。
config.secret_key = Rails.application.credentials.secret_key_base
Railsの進化が早くて新しい機能がモリモリ追加されて変更も多いので、随時キャッチアップが必要ですね。
参考