5

我最近问了一个类似的问题,但是随着问题的发展,我决定提出一个新问题——我希望这是预期的方法吗?

将我的 Rails 4 应用程序推送到 Heroku 后,我不断收到内部服务器错误页面,错误是:

您必须在应用的配置中设置 config.secret_key_base

这是因为我的 .gitignore 文件故意包含了config/initializers/secret_token.rb 。

我已经安装了 Figaro gem,以便可以将我的 secret_key_base 设置为环境变量以增加安全性。我已经在 Heroku 上检查了密钥是否设置正确。

我的 secret_token.rb 代码如下:

MyApp::Application.config.secret_key_base = ENV["SECRET_KEY_BASE"]

但是,我仍然遇到同样的问题。

谁能帮忙???

4

3 回答 3

10

我做了一些与你类似的事情,但没有使用 Figaro。我基于这篇博文

总之,这就是我所做的:

1)从你的 .gitignore 中删除 config/initializers/secret_token.rb

2) 将此代码用于您的 secret_token.rb:

MyApp::Application.config.secret_token = if Rails.env.development? or Rails.env.test?
  ('x' * 30) # meets minimum requirement of 30 chars long
else
  ENV['SECRET_TOKEN']
end

3) 提交并重新推送

4)设置 Heroku env variale 像:

heroku config:set SECRET_TOKEN=12345.....

配置集后 Heroku 重新启动后立即工作。

于 2013-09-01T22:59:16.933 回答
6

您可以在 heroku 上设置环境变量: https ://devcenter.heroku.com/articles/config-vars

您需要使用以下命令为 heroku 设置 SECRET_KEY_BASE 环境变量:

heroku config:set SECRET_KEY_BASE=value
于 2013-09-01T11:16:15.680 回答
1

这可能对使用 Rails +4.1 的人有所帮助:

“在部署 Rails 4.1+ 应用程序时,Heroku 将默认在您的应用程序上指定一个 SECRET_KEY_BASE。” ( https://blog.heroku.com/container_ready_rails_5 )

换句话说,你不必做任何事情。您可以从 .gitignore 文件中省略 secrets.yml(即标准版本),而不必担心丢失任何与生产相关的机密。

于 2016-09-21T09:50:13.730 回答