【发布时间】:2015-01-05 17:38:35
【问题描述】:
我正在使用环境变量的存在来确定我的应用程序是否已部署(不利于在我的本地计算机上运行)。
我的测试脚本可以找到并显示变量值,但根据我的应用程序,该变量不存在。
test.rb
Secret_Key_Path = ENV['APPLICATION_VERSION'] ? '/path/to/encrypted_data_bag_secret' : File.expand_path('~/different/path/to/encrypted_data_bag_secret')
puts ENV['APPLICATION_VERSION']
puts Secret_Key_Path
puts File.exists? Secret_Key_Path
info.rb(相关位)
::Secret_Key_Path = ENV['APPLICATION_VERSION'] ? '/path/to/encrypted_data_bag_secret' : File.expand_path('~/different/path/to/encrypted_data_bag_secret')
如果我记录Secret_Key_Path 的值,它会记录为我不期望的值(即'~/different/path/to/encrypted_data_bag_secret' 而不是'/path/to/encrypted_data_bag_secret')
这是我启动应用程序的方式(从我的主可执行脚本内部,所以我可以从任何地方运行 app install 而不必去文件夹)
exec "(cd /path/to/app/root && exec sudo rackup --port #{80} --host #{'0.0.0.0'} --pid /var/run/#{NAME}.pid -O NAME[#{NAME}] -D)"
如果我这样做 env | grep APP 我得到:
APPLICATION_VERSION=1.0.130
APPLICATION_NAME=app-name
有人建议这是一个执行上下文问题,但如果是这样,我不确定如何解决。
那么发生了什么?任何帮助和建议将不胜感激。
【问题讨论】:
-
我认为这与使用
sudo有关,它会更改它执行的命令的环境。不幸的是,我对此知之甚少,无法建议如何解决它。 -
我删除了 sudo 并且它起作用了,所以谢谢。
-
@matt 将其放在答案中,以便可以“回答”这个问题。
标签: ruby sinatra environment-variables ubuntu-server