【问题标题】:Rails 6 heroku Precompiling assets failedRails 6 heroku 预编译资产失败
【发布时间】:2020-06-01 04:15:24
【问题描述】:

在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 中

【问题讨论】:

  • 您是否在 Heroku 中配置了 RAILS_MASTER_KEY 环境变量?您应该能够从本地 config/master.key 文件中复制相同的密钥。 master.key 文件不应提交到您的存储库。
  • @scilence 我在其他 Rails 项目中没有遇到过这个问题....我尝试根据 rails 凭据进行设置:edit --environment production 但遇到同样的问题
  • 好的,所以我发现这篇文章 viget.com/articles/… 提到在 heroku 应用程序中添加主密钥 - 在设置 Config Vars 下。我做到了,它奏效了

标签: ruby-on-rails devise omniauth-twitter


【解决方案1】:

问题是由于无法在生产环境中访问 c​​redentials.yml 引起的。我们可以在生产环境中访问主键值,因为它没有被提交。

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

【讨论】:

    猜你喜欢
    • 2021-11-12
    • 1970-01-01
    • 2022-01-26
    • 2014-06-27
    • 1970-01-01
    • 2012-11-29
    • 1970-01-01
    • 2023-04-04
    • 2020-04-17
    相关资源
    最近更新 更多