ruby-on-rails - Rails 6 heroku 预编译资产失败
问题描述
在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-value 解决了这个问题,在设置下,config vars master key
推荐阅读
- r - RcppRoll 或 CumSum 滞后于动态窗口
- php - 在 php 脚本中找不到类
- php - PHP curl 将表单数据发布到 REST API
- javascript - 如何使用 prebid.js 处理来自 GPT 的多个广告位
- python - 命令迁移未执行
- apache - 当用户浏览网站上的其他页面时保持相同的 url 参数
- javascript - 带有 Vuejs 的 Laravel 在没有 php artisan serve 的情况下运行项目
- asp.net-core - 如何在同一个 .net core 3 应用程序中使用剃须刀页面和控制器?
- python - 在 Pandas DataFrame 中查找数值最接近的行
- javascript - 如何在 Metro 中获取 React Native 变体?