我很难在运行乘客和nginx的虚拟机上设置Rails 4.2,而不是使用RVM或类似的东西。
我得到了Incomplete response received from application
并查看了nginx错误日志,它说了一些关于missing secret_key_base
和secret_key
的内容,尽管在config目录中没有任何引用的地方。
我运行了export SECRET_KEY_BASE='...'
并在rails c production
ENV["SECRET_KEY_BASE"]
中显示了密钥,但在重新启动nginx后,我仍然遇到了同样的错误。
直接将密钥置于秘密中解决了这个问题,但有没有一种实际的方法可以正确地做到这一点?
解决方案:
对我有用的解决方案是将export SECRET_KEY_BASE="<string obtained from rake secret>"
放在.bashrc
如果您使用rbenv
,则接受的答案中会有以下解决方案。
答案 0 :(得分:1)
如果您使用的是rbenv
,则可以添加rbenv-vars
插件并添加一个.rbenv-vars
文件,其中包含(并且不会将其检入您的回购邮件中)
SECRET_KEY_BASE='...'
其他解决方案是手动将SECRET_KEY_BASE
添加到secrets.yml
文件中,并忽略来自您的回购的文件。
提到的第三个答案是添加
export SECRET_KEY_BASE='...'
其中一个文件.bashrc
.bash_profile
.profile
答案 1 :(得分:1)
您的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=...
重新启动服务器,你应该是肉汁