我正在尝试添加一个环境变量以在我的Rails应用程序中使用。目前,我们的应用程序使用/etc/environment
中定义的几个环境变量。他们工作正常。所以我已经为/etc/environment
添加了一个新变量(并重新启动了它的地狱)。但是当我尝试访问新变量时,它的未定义。打印出ENV.inspect
会显示所有原始变量,但不会显示我新添加的变量。为什么哦为什么?
运行Apache 2 / Passenger 4 / Rails 4.最近从Passenger 2 / Rails 3升级,如果它很重要。
修改
原来我认为“工作正常”也不起作用(它们在我的Rails应用程序中重新定义)。因此/etc/environment
中的所有变量都没有加载到应用程序中。不知道为什么我认为该系统有效,但事实并非如此。
答案 0 :(得分:2)
对你来说可能不是好消息,但你必须reboot the instance才能看到它(或检查那个问题的其他技巧)。
您也可以在Apache配置中使用SetEnv
,只需重新启动apache即可让您的应用看到新值。
答案 1 :(得分:1)
<强> ENV 强>
从Rails 3升级 - Rails 4不应该是ENV
变量的主要问题,除非Rails处理它们的方式会发生变化。
我们使用以下内容:
这适用于我们的Rails 4,Ubuntu 12.04,Passenger,Apache 2
-
您可能的问题是您添加新变量后Rails应用程序尚未更新。
当您运行Rails应用程序时,它实际上会加载应用程序的“实例”,然后以某种方式继续加载它。我不完全确定它是如何工作的,但我做知道Passenger
在生产中基本上“缓存”一个rails应用程序
这意味着如果你要添加新的环境变量,那么Passenger
之类的东西可能会使Rails应用程序没有更新?如果是这种情况,您可能希望use the touch tmp/restart.txt
command: