2015-05-22 71 views
0

我有一個API密鑰,我保存到​​,我想將其保存爲我的Rails應用程序中的全局變量。我認爲這會工作,這是我config/initializers/my_constants.rbRuby on Rails - 源文件並將ENV變量保存爲全局

`source "/home/user/api/keys"` 
API_PASS = ENV["API_PASSWORD"] 

這是​​(沒有真正的價值,很明顯):

#!/bin/bash 
export API_PASSWORD="--------" 

源命令似乎並沒有做任何事情。 API_PASS只設置爲零。我怎樣才能做到這一點?

+0

爲什麼不在環境變量中設置shell? –

+0

@DaveNewton - 我想將它自動化。所以我想我會製作一個腳本來調用源命令,然後部署服務器。但我認爲在處理我的cron任務時,我仍然必須打開該文件並將其解析出來。 – Isaac

回答

3

上述方法不起作用,因爲backtick命令啓動它自己的shell並結束它,因此這些變量永遠不會包含在腳本的其餘部分中。

我想你必須自己解析文件並將條目添加到ENV中。我會看看dotenv gem,看看你是否可以將它指向你自己的環境文件。他們爲你做了所有艱苦的工作。

https://github.com/bkeepers/dotenv

+0

我想我要創建一個使用source命令的腳本,然後爲此部署。我想我必須在cron任務中處理這個密碼時解析出這個文件。我可能只是打開文件並用regex自己解析內容。謝謝你解釋爲什麼back ticks失敗! – Isaac