7

我有很多憑證,我必須處理,以便將我的應用程序掛接到亞馬遜s3和其他服務。如何在本地定義環境變量並且不改變他們的定義/推送他們到heroku?

我讓我的heroku應用程序啓動並運行s3,並且它工作的很棒。我在此示例中定義了我的s3訪問憑據:http://devcenter.heroku.com/articles/config-vars

但是,我現在想要能夠從我的本地開發環境訪問s3。很明顯,我在heroku上定義的配置變量在我的本地主機上不可用。我怎樣才能在本地定義這些密鑰?另外,我正在特別尋求一種安全的解決方案(例如,如果我在初始化程序中以純文本定義了我的密鑰或其他東西,我不希望該文件在heroku上被推送)。

爲背景,這裏是我添加到我的模型中,得到回形針與S3

has_attached_file :photo, 
:storage => :s3, 
:bucket => 'bucket_name', 
:s3_credentials => { 
    :access_key_id => ENV['S3_KEY'], 
    :secret_access_key => ENV['S3_SECRET'] 
} 

回答

9

這樣定義的東西最好的地方跑,如果你不希望它做分享,可能是一個初始化。

# config/initializers/s3_constants.rb 


if Rails.env.development? 
    S3_KEY = "mys3key" 
    S3_SECRET = "mys3secret" 
end 

確保該文件被添加到的.gitignore這樣就不會與你的資料庫的其餘部分一起推。

實際上,基於每個環境不同的常量應該確實位於該環境的文件中(比如說這裏的development.rb)......但這些文件也應該真正添加到您的版本控制系統中,如果你肯定的話,一定要從git中排除這些數據,那麼你不提交的單獨文件可能是你最好的選擇。

+0

這絕對是做到這一點的最佳方式。雖然,我寧願測試env是不是'生產。所以它也適用於你的測試。 – 2013-05-19 15:49:38

+0

如果你是git忽略文件,生產服務器將如何知道env變量? gitignored文件仍然傳遞到服務器? – kibaekr 2014-08-28 23:26:33

2

只需在您的.bash_profile文件中像定義任何其他環境變量一樣定義環境變量即可。也許留下一條評論,將該部分劃分爲Rails特定的環境變量。

#~/.bash_profile 
# Rails constants 
S3_KEY="blady" 
S3_SECRET="bladybloo123" 

另外,也許你想要將名稱更改爲更具體的,這樣就可以有一個以上的S3連接定義的東西...

-2

的Heroku提供Heroku的配置:添加和您提供的key = value 。請參閱配置變量文檔

相關問題