将许多环境变量传递给Rails应用程序由Unicorn运行

时间:2012-10-19 12:20:40

标签: ruby-on-rails shell unix environment-variables unicorn

我需要将大量环境变量传递给Unicorn Web服务器运行的Rails应用程序。 sample unicorn init script包含以下行:

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

我甚至使这个文件可执行(不确定是否有必要)

重启Unicorn。但ENV["VAR1"] 在我的申请中没有任何内容 ......

它应该以这种方式工作吗?如果是的话,我做错了什么?如果不是,那么我怎样才能以干净的方式将许多env vars传递到Rails应用程序? (不污染全局环境或将所有环境置于命令行中)

更新我的调查显示shell文件如下:

. init.conf
echo $VAR1

按预期工作。但是这一个:

. init.conf
ruby -e "puts ENV['VAR1']"

没有。所以.将代码导入到脚本中,但是这样设置的env变量不会进一步传输。

2 个答案:

答案 0 :(得分:1)

我会考虑使用foreman,特别是使用.env定义的{{1}}文件here

答案 1 :(得分:1)

您可能必须从配置文件中“导出”变量。如果你放

它是否有效
export VAR1=value1
export VAR2=value2

进入配置文件?