由于Devise secret_key

时间:2015-06-07 05:36:34

标签: ruby-on-rails heroku devise

我已经整夜尝试部署到Heroku,但我仍然遇到同样的错误:

  

遥控器:----->为Rails资产准备app>管道
  remote:运行:rake assets:预编译
  遥控器:耙子中止了!
  remote:未设置Devise.secret_key。请将以下内容添加到您的Devise初始化程序中:
  remote:config.secret_key ='秘密令牌字符串'
  remote:请确保在安装Devise或设置密钥后重新启动应用程序。

...

  

遥控器:!预编译资产失败   遥控器:!
  遥控器:
  远程:!推送拒绝,无法编译Ruby应用程序
  遥控器:
  remote:验证部署...
  遥控器:
  远程:!推动拒绝病毒 - blocitoff   遥控器:
  致https://git.heroku.com/viral-blocitoff.git
   ! [远程拒绝]主人 - >主人(预先接收挂钩拒绝)
  错误:无法将某些引用推送到“https://git.heroku.com/viral-blocitoff.git

我还运行了以下命令为heroku设置我的环境变量:

    figaro heroku:set -e production

这会读取我的所有固定值,包括SENDGRID和DEVISE_SECRET_KEY

这是我的application.yml文件(减去固定值):

    SENDGRID_PASSWORD: ********
    SENDGRID_USERNAME: @heroku.com

    production:
      SECRET_KEY_BASE: secret token
      DEVISE_SECRET_KEY: secret token

这就是我在devise.rb文件中的内容:

    config.secret_key = ENV['DEVISE_SECRET_KEY']

我在这个网站上查看了其他提议的解决方案,但是我在不到两个月前就在另一个应用程序上开发了Devise而没有完成这些任务。有什么我想念的吗?

2 个答案:

答案 0 :(得分:0)

让它部署。我取消了我的heroku env变量,然后重置它们。我还使用了一个令牌(通过ENV变量)用于开发和生产secret_key_base推送远程主机到Heroku,它编译并启动。然后将数据库迁移到Heroku。一切都很好。

答案 1 :(得分:0)

我的应用程序报告了相同的错误,但问题是使用 Figaro gem和刚性systemAdmin的组合。在实现 Figaro gem时,创建 secrets.yml 文件以分配身份验证令牌,然后将其妥善存储在 .gitignore 中,可能会发生冲突尝试部署到heroku时,因为 .gitignore 阻止推送部署所需的 secrets.yml 文件凭据。

具体来说,我使用以下gem和程序来解决冲突。

  1. gem 'heroku_secrets', github: 'alexpeattie/heroku_secrets'
  2. bundle install
  3. git push heroku master --force
  4. 上述解决方案在相关的StackOverflow帖子中进一步解释:How do you manage secret keys and heroku with Ruby on Rails 4.1.0beta1?

    此外,我在 Rails 4.1 中使用 Figaro 遇到了多个问题;我在以下Gist处列出了与管理 secrets.yml 相关的详细问题。

    希望这有帮助 - 谢谢!