Rails 没有选择 SECRET_KEY_BASE 环境变量

Rails doesn't pick up SECRET_KEY_BASE environment variable

这是我现在正在处理的内容:

Ubuntu 信任 14.04

Rails 4.2.6

Ruby2.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 文件中。所以现在我认为我的问题要么与 passenger/nginx 有关,要么与某处的拼写错误有关。

更有可能的是环境变量实际上没有设置,而不是 Rails 没有选择它们。你在窃取秘密,而我不这样做。我在 Unix etc/environment 中手动设置它们,并且不将任何秘密检查到源代码管理中。但以下是一些应该可以帮助您解决或磨练问题的步骤。

在你的Ubuntu服务器上用于系统范围的环境变量

1- $env

寻找您的 SECRET_TOKEN 和 SECRET_KEY_BASE。该错误告诉您这些未设置,这只是一种检查环境的技术。 (如果设置了RAILS_ENV也会显示在列表中。)

2- $sudo nano /etc/environment

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

export SECRET_TOKEN="T99ABC..."

export SECRET_KEY_BASE="99ABC..."

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

4- $env - 再检查环境

寻找要设置的 SECRET_TOKEN 和 SECRET_KEY_BASE。

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