缺少'production'环境的`secret_key_base`,在`config/secrets.yml`中设置此值

res*_*ing 2 passenger ruby-on-rails-4

当我导航到我的Rails生产站点时,我得到:

*** Exception RuntimeError in Rack application object (Missing `secret_key_base` for 'production' environment, set this value in `config/secrets.yml`) (process 29032, thread 0x9b81a60(Worker 1)):
Run Code Online (Sandbox Code Playgroud)

我看到这个错误的许多解决方案是导出环境变量 export SECRET_KEY_BASE='a long string generated by running rake secret

然而,这对我不起作用(我得到同样的错误).我必须包含config/environments/production.rb: config.secret_key_base = "a long string generated by running rake secret"解决此错误.

我的问题是,这是正确的方法,因为实践是不提交密钥?有没有办法让Rails从环境变量中读取?

我正在使用Ubuntu 14.04.1,Apache2,Phusion Passenger堆栈.

Hon*_*gli 7

您正在错误地使用环境变量.在bash中设置环境变量对Apache和Phusion Passenger + Apache没有影响(Nginx也是如此),因为环境变量是基于每个进程继承的,而不是系统范围的.Phusion Passenger文档有一个很长的部分解释为什么这个,以及如何解决它.