我正在使用環境變量的存在來確定我的應用程序是否部署(如在我的本地計算機上運行)。sinatra應用程序找不到環境變量,但測試腳本可以
我的測試腳本可以找到並顯示變量值,但我根據我的應用程序變量不存在。
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',它改變它執行命令的env。不幸的是,我不知道如何解決它。 – matt
我刪除了sudo,它工作,所以謝謝。 – Thermatix
@matt把這個答案放在答案中,這個問題可以被「回答」。 – lcguida