如何在 rails 中正确添加 ENV["SECRET_KEY"BASE"]
How to correctly add ENV["SECRET_KEY"BASE"] in rails
我在 passenger 和 nginx 上的 VM 运行 上设置 Rails 4.2 生产环境时遇到了困难,并且没有使用 RVM 或类似的东西。
我得到 Incomplete response received from application
并查看 nginx 错误日志,它说了一些关于 missing secret_key_base
和 secret_key
的内容,尽管在配置目录中的任何地方都没有提到最后一个。
I 运行 export SECRET_KEY_BASE='...'
and in rails c production
ENV["SECRET_KEY_BASE"]
显示密钥但在重新启动 nginx 后我仍然得到相同的错误。
将密钥直接放在秘密中解决了这个问题,但是否有正确的方法来做到这一点?
解法:
对我有用的解决方案是将 export SECRET_KEY_BASE="<string obtained from rake secret>"
放在 .bashrc
中
如果你使用rbenv
,接受的答案中有下面的另一种解决方案。
如果您正在使用 rbenv
you can add the rbenv-vars
插件并添加一个 .rbenv-vars
文件,其中包含(不要将其签入您的存储库)
SECRET_KEY_BASE='...'
其他解决方案是将 SECRET_KEY_BASE
手动添加到 secrets.yml
文件,同时从您的存储库中忽略该文件。
看到提到的第三个答案是添加
export SECRET_KEY_BASE='...'
到这些文件之一 .bashrc
.bash_profile
.profile
你的 config/secrets.yml
应该是
development:
secret_key_base: f91fe2e2e4a9bf8f8b6aa1c296bb9ec10f2bc91c08965176a642ea0927400651ea993512f83d9823bcc046555e40b8c257f5f19fab8c59b5a02c9d230a369fe7
test:
secret_key_base: c116ac7c8f69018d1f4e10f632cac7a22348f0bd8ed8f21ca45460574d2f501f248418bc888e31556e16ba3ab58c3a7cba027140097abe3f511dddf6625fa8cd
# Do not keep production secrets in the repository,
# instead read values from the environment.
production:
secret_key_base: <%= ENV["SECRET_KEY_BASE"] %>
要设置 SECRET_KEY_BASE
,首先您需要使用
生成它
rake secret
然后获取该输出并编辑您的 /etc/environment
(取决于您的发行版,假设此处为 Ubuntu)并将其原样放置
SECRET_KEY_BASE=...
重新启动你的服务器,你应该是肉汁
我在 passenger 和 nginx 上的 VM 运行 上设置 Rails 4.2 生产环境时遇到了困难,并且没有使用 RVM 或类似的东西。
我得到 Incomplete response received from application
并查看 nginx 错误日志,它说了一些关于 missing secret_key_base
和 secret_key
的内容,尽管在配置目录中的任何地方都没有提到最后一个。
I 运行 export SECRET_KEY_BASE='...'
and in rails c production
ENV["SECRET_KEY_BASE"]
显示密钥但在重新启动 nginx 后我仍然得到相同的错误。
将密钥直接放在秘密中解决了这个问题,但是否有正确的方法来做到这一点?
解法:
对我有用的解决方案是将 export SECRET_KEY_BASE="<string obtained from rake secret>"
放在 .bashrc
如果你使用rbenv
,接受的答案中有下面的另一种解决方案。
如果您正在使用 rbenv
you can add the rbenv-vars
插件并添加一个 .rbenv-vars
文件,其中包含(不要将其签入您的存储库)
SECRET_KEY_BASE='...'
其他解决方案是将 SECRET_KEY_BASE
手动添加到 secrets.yml
文件,同时从您的存储库中忽略该文件。
看到提到的第三个答案是添加
export SECRET_KEY_BASE='...'
到这些文件之一 .bashrc
.bash_profile
.profile
你的 config/secrets.yml
应该是
development:
secret_key_base: f91fe2e2e4a9bf8f8b6aa1c296bb9ec10f2bc91c08965176a642ea0927400651ea993512f83d9823bcc046555e40b8c257f5f19fab8c59b5a02c9d230a369fe7
test:
secret_key_base: c116ac7c8f69018d1f4e10f632cac7a22348f0bd8ed8f21ca45460574d2f501f248418bc888e31556e16ba3ab58c3a7cba027140097abe3f511dddf6625fa8cd
# Do not keep production secrets in the repository,
# instead read values from the environment.
production:
secret_key_base: <%= ENV["SECRET_KEY_BASE"] %>
要设置 SECRET_KEY_BASE
,首先您需要使用
rake secret
然后获取该输出并编辑您的 /etc/environment
(取决于您的发行版,假设此处为 Ubuntu)并将其原样放置
SECRET_KEY_BASE=...
重新启动你的服务器,你应该是肉汁