2

我需要将大量环境变量传递给 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']"

才不是。因此.将代码导入脚本,但以这种方式设置的环境变量不会进一步传输。

4

2 回答 2

1

我会考虑使用foreman,特别是因为它使用这里.env定义的文件。

于 2012-10-24T01:22:55.327 回答
1

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

export VAR1=value1
export VAR2=value2

进入配置文件?

于 2012-10-24T10:00:04.357 回答