Rails 6 heroku 预编译资产失败

Rails 6 heroku Precompiling assets failed

在 heroku

上使用 rails 和 omniauth 编译失败
remote: -----> Preparing app for Rails asset pipeline
remote:        Running: rake assets:precompile
remote:        rake aborted!
remote:        NoMethodError: undefined method `[]' for nil:NilClass
remote:        /tmp/build_f21d4b6cc71ba2ef116eca0b20a72d4b/config/initializers/devise.rb:263:in `block in <main>'
remote:        /tmp/build_f21d4b6cc71ba2ef116eca0b20a72d4b/vendor/bundle/ruby/2.7.0/gems/devise-4.7.1/lib/devise.rb:311:in `setup'
remote:        /tmp/build_f21d4b6cc71ba2ef116eca0b20a72d4b/config/initializers/devise.rb:5:in `<main>'

我按照设计 .rb 到 263,这是我添加 twitter omniauth

config.omniauth :twitter, Rails.application.credentials.twitter[:app_id], Rails.application.credentials.twitter[:app_secret]

我正在存储我存储在 config/credentials 中的凭据。yml.enc

问题是由于无法在生产环境中访问 credentials.yml 造成的。我们可以在生产中访问主密钥值,因为它没有提交。

我通过在 Heroku 中添加 master.key 值解决了这个问题,在设置下,config vars master key