这个关于不对密钥进行版本控制的要点很棒,我现在已经用它几次了,不再对我的 Rails 密钥库进行版本控制。
我尝试将它用于 heroku 上的设计 secret_key,但我的尝试失败了。它在开发中运行良好,但拒绝让我推送到 heroku - 说我创建的设计密钥(以与上面的要点相同的方式)没有设置。
我让它使用硬编码的密钥(签入 git),但当我使用以下内容时没有:
Devise.setup do |config|
config.secret_key = ENV['DEVISE_SECRET_KEY']
...
(与关联的环境变量三次检查它是否存在)
在推送到 heroku 期间,预编译资产似乎失败了
$ git push heroku master
... (bundle stuff here)
Running: rake assets:precompile
rake aborted!
Devise.secret_key was not set. Please add the following to your Devise initializer:
config.secret_key = '0cfa796871e0...
/tmp/build_.../vendor/bundle/ruby/1.9.1/gems/devise-3.1.1/lib/devise/rails/routes.rb:446:in `raise_no_secret_key'
/tmp/build_.../vendor/bundle/ruby/1.9.1/gems/devise-3.1.1/lib/devise/rails/routes.rb:195:in `devise_for'
/tmp/build_.../config/routes.rb:2:in `block in <top (required)>'
...( rest of the long stacktrace with little of interest here)
在路由目录中运行“devise_for”时会引发错误。相关行:
MyApp::Application.routes.draw do
devise_for :users, :path_names => { :sign_in => 'login', :sign_out => 'logout'}
实际设计 gem 中的相关行是:
raise_no_secret_key unless Devise.secret_key
所以它实际上只是检查 secret_key 是否被设置。
只是为了确认...我检查了heroku配置,实际上我确实以该名称将密钥放入了环境中。
DEVISE_SECRET_KEY: 3f844454bee...(more here)
RAILS_SECRET_KEY_BASE: 04bf569d4e...(more here)
因为它是在一个 rake 任务而不是应用程序中 - 我猜这就是它无法进入 ENV 的原因???
关于我可以从哪里开始寻找解决方案的任何想法?