Rails没有获取SECRET_KEY_BASE环境变量

时间:2016-06-24 23:11:36

标签: ruby-on-rails-4 environment-variables ubuntu-14.04 production-environment

以下是我现在正在使用的内容:

Ubuntu Trusty 14.04

Rails 4.2.6

Ruby 2.2.3

乘客

Nginx的

当我尝试访问IP时,我收到此消息:

 Incomplete response received from application

当我看到nginx / error.log时,我看到:

 Missing `secret_token` and `secret_key_base` for 'production' environment, set these values in `config/secrets.yml`

在服务器上我做了:

RAILS_ENV=production bundle exec rake secret

我把这个结果放在每个文件中以便进行测量:

~/.bashrc
~/.bash_profile
~/.profile
/app/shared/config/local_env.yml

对于所有shell脚本,格式为:

export SECRET_KEY_BASE="[key]"

对于我刚使用的local_env.yml

SECRET_KEY_BASE="[key]"

我也试过没有引号输入它。

每次我做出更改时,我都重新启动了服务器。没有雪茄。

还有什么问题?

- 更新

我甚至直接将秘密密钥添加到secrets.yml文件中。所以现在我认为我的问题要么与乘客/ nginx有关,要么在某处有拼写错误。

1 个答案:

答案 0 :(得分:4)

更有可能的是,实际上没有设置环境变量而不是Rails没有提取它们。你在偷偷摸摸的秘密,我不这么做。我在Unix etc/environment中手动设置它们,并且不检查任何秘密进入源代码控制。但以下几个步骤可以帮助您解决或磨练问题。

在您的Ubuntu服务器上以获取系统范围的环境变量

1- $env

寻找你的SECRET_TOKEN和SECRET_KEY_BASE。该错误告诉您这些没有设置,这只是一种检查env的技术。 (如果已设置,RAILS_ENV也将显示在列表中。)

2- $sudo nano /etc/environment

添加以下行 - 使用双引号之间的实际值。不要使用[密钥]或任何程序替换。

export SECRET_TOKEN="T99ABC..."

export SECRET_KEY_BASE="99ABC..."

3- $logout / $login重新加载环境变量

4- $env - 再次检查环境

寻找你的SECRET_TOKEN和SECRET_KEY_BASE。

5-再次尝试部署。如果失败,请再次使用$env检查环境变量。它将告诉您部署中的某些内容是否粉碎了您的SECRET_ * env vars。