我使用本教程(独立乘客)和RVM设置了Centos 7 VM。我正在通过Capistrano部署rails应用程序。
一切似乎都有效,除了我设置环境变量的地方,ENV [" myvar"]无法在Rails中读取。
我已尝试export myvar=test
作为"部署者"以及根。我也尝试将其添加到bashrc中。如果我以部署者身份登录并执行以下操作:
#symlink to current capistrano deploy
cd ~/rails/railsapp/current/
rails r "puts ENV['myvar']"
它给了我正确的ENV输出。但是,如果我尝试从我实际部署的capistrano rails应用程序输出ENV [' myvar'],我什么也得不到。
我应该在哪里设置这些ENV变量?我知道导轨中的ENV变量是正确完成的,因为部署到heroku的应用程序以及我的开发机器正确输出了ENV [' myvar']。
答案 0 :(得分:0)
通常,您的设置应该有效。从版本4开始,独立的Passenger应该继承shell启动脚本中定义的所有变量。在与使用Passenger相关的各种场景中有一个很好的documentation about environment variables。
我会检查或者两件事:
从.bashrc
加载.profile
。如果不是,则您的变量将仅在交互式shell中加载,而不是在乘客中加载,这可以解释您在尝试以deployers
登录时所描述的行为。让我引用文档:
确保
~/.bashrc
实际包含~/.profile
,例如,如果您使用useradd
而不是adduser
创建了用户,则情况可能并非如此。
此外,请查看文档的this section,并检查您是否遵守Passenger实际将环境变量传递给应用程序的条件。