Rails应用程序没有加载添加到/ etc / environment的新环境变量

时间:2014-07-23 22:45:33

标签: ruby-on-rails environment-variables passenger

我正在尝试添加一个环境变量以在我的Rails应用程序中使用。目前,我们的应用程序使用/etc/environment中定义的几个环境变量。他们工作正常。所以我已经为/etc/environment添加了一个新变量(并重新启动了它的地狱)。但是当我尝试访问新变量时,它的未定义。打印出ENV.inspect会显示所有原始变量,但不会显示我新添加的变量。为什么哦为什么?

运行Apache 2 / Passenger 4 / Rails 4.最近从Passenger 2 / Rails 3升级,如果它很重要。

修改

原来我认为“工作正常”也不起作用(它们在我的Rails应用程序中重新定义)。因此/etc/environment中的所有变量都没有加载到应用程序中。不知道为什么我认为该系统有效,但事实并非如此。

2 个答案:

答案 0 :(得分:2)

对你来说可能不是好消息,但你必须reboot the instance才能看到它(或检查那个问题的其他技巧)。

您也可以在Apache配置中使用SetEnv,只需重新启动apache即可让您的应用看到新值。

答案 1 :(得分:1)

<强> ENV

从Rails 3升级 - Rails 4不应该是ENV变量的主要问题,除非Rails处理它们的方式会发生变化。

我们使用以下内容:

enter image description here

这适用于我们的Rails 4,Ubuntu 12.04,Passenger,Apache 2

-

可能的问题是您添加新变量后Rails应用程序尚未更新。

当您运行Rails应用程序时,它实际上会加载应用程序的“实例”,然后以某种方式继续加载它。我不完全确定它是如何工作的,但我知道Passenger在生产中基本上“缓存”一个rails应用程序

这意味着如果你要添加新的环境变量,那么Passenger之类的东西可能会使Rails应用程序没有更新?如果是这种情况,您可能希望use the touch tmp/restart.txt command

enter image description here