我需要将大量环境变量传递给 Unicorn Web 服务器运行的 Rails 应用程序。示例 unicorn 初始化脚本具有以下几行:
APP_ROOT=/home/x/my_app/current
<...>
INIT_CONF=$APP_ROOT/config/init.conf
<...>
test -f "$INIT_CONF" && . $INIT_CONF
所以我创建了一个$APP_ROOT/config/init.conf
,把我所有的变量都放在那里:
VAR1=value1
VAR2=value2
我什至使这个文件可执行(不确定是否有必要)
并重新启动独角兽。但在我的应用程序中ENV["VAR1"]
没有返回任何内容......
它应该以这种方式工作吗?如果是,我做错了什么?如果不是,那么如何以干净的方式将许多环境变量传递给 Rails 应用程序?(不污染全局环境或将它们全部放在命令行中)
更新我的调查显示 shell 文件是这样的:
. init.conf
echo $VAR1
按预期工作。但是这个:
. init.conf
ruby -e "puts ENV['VAR1']"
才不是。因此.
将代码导入脚本,但以这种方式设置的环境变量不会进一步传输。