【发布时间】: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