【问题标题】:Rails 4.1 pushing secrets to herokuRails 4.1 将秘密推送到 heroku
【发布时间】:2014-02-19 23:20:23
【问题描述】:

Rails 4.1.0.beta1 和 Devise。

我正在尝试从版本控制中删除我的所有密钥,并且我已经升级到 Rails 4.1 来尝试这个新的 secrets.yml

试图将 Devise 的 config.secret_key 推送到 heroku,但在 assets:precompile 之后失败了

Preparing app for Rails asset pipeline
       Running: rake assets:precompile
       rake aborted!
       Devise.secret_key was not set. Please add the following to your Devise initializer:
       config.secret_key = 'EXAMPLE_KEY_HERE'
       Please ensure you restarted your application after installing Devise or setting the key.

这是我的更改,我将保留在 cmets 中的旧代码。 (有效)

devise.rb

  # config.secret_key = 'THIS_IS_A_FAKE_KEY' #<---this_is_commented_out
  config.secret_key = Rails.application.secrets.devise_secret_key

secrets.yml

production:
  devise_secret_key: 'THIS_IS_A_FAKE_KEY'

然后运行heroku labs:enable user-env-compile -a myapp(不确定是否有必要)

然后当我推送到我的分叉 heroku 环境 git push forked master 时,我得到了上述错误。

我还注意到在这个 Devise 存储库中对此进行了一些讨论,所以我想我会在源存储库旁边更新我的 gem,没有区别。这是讨论的一部分 (here)。

【问题讨论】:

标签: ruby-on-rails heroku devise


【解决方案1】:

您可能已将 secrets.yml 添加到您的 .gitignore 中。这是有道理的,因为您将密钥放入其中 - 但由于 Heroku 部署使用 git,它永远不会看到您的 secrets.yml。

一种解决方案是使用 heroku_secrets gem - 请参阅https://stackoverflow.com/a/22458102/2831572

另一种解决方案是在将所有敏感密钥替换为对环境变量的引用后,将 secrets.yml 添加到 git(即从 .gitignore 中删除)。
所以:

production:
  devise_secret_key: <%= ENV['DEVISE_KEY'] %>

然后运行heroku config:set DEVISE_KEY='7658699e0f765e8whatever'

【讨论】:

  • 希望 Heroku 让您上传非 repo 文件以合并到 slug 中,我想使用没有 ENV 变量的 secrets.yml。也许您可以以某种方式在本地提交并仅强制推送到heroku,然后在推送到其他地方时恢复为不包括secrets.yml(每次部署......)或者更好的是,只需将文件提交到heroku远程而不是本地(很确定这是不可能的)
  • 第二种方法看起来很……愚蠢。秘密文件的重点是把你的钥匙放在那里,对吧?
  • @gwho 是的,我认为第二种方法违背了 secrets.yml 文件的目的。
  • 不要将 secrets.yml 添加到 git。使用 rake heroku:secrets RAILS_ENV=production 将您的秘密传输到 heroku 环境变量。如果您想帮助其他开发人员快速开始使用您的应用程序,请将文件 secrets.yml.sample 添加到您的存储库中,其中包含所有密钥,但没有值。就像您可能从 database.yml 中知道的那样。 Figaro 对于 Rails 4 没有用处,因为它对于其他部署/用例(例如 gem capistrano-secrets-yml)要容易得多。
猜你喜欢
  • 1970-01-01
  • 2014-07-08
  • 2010-12-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-07-18
  • 2014-06-26
  • 1970-01-01
相关资源
最近更新 更多