如何在rails

时间:2015-06-10 23:45:37

标签: ruby-on-rails-4 deployment

我很难在运行乘客和nginx的虚拟机上设置Rails 4.2,而不是使用RVM或类似的东西。

我得到了Incomplete response received from application并查看了nginx错误日志,它说了一些关于missing secret_key_basesecret_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,则接受的答案中会有以下解决方案。

2 个答案:

答案 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=...

重新启动服务器,你应该是肉汁