2012-04-28 58 views
5

我目前正在嘗試使用最新的aws-sdk配置Paperclip建議的gem。在S3.yml中無法識別ENV變量

在我S3.yml文件我有這樣的事情

development: 
    bucket: newmeeter-dev 
    access_key_id: ENV['S3_KEY'] 
    secret_access_key: ENV['S3_SECRET'] 

但它不能識別ENV變量。我收到以下錯誤

AWS::S3::Errors::InvalidAccessKeyId in PhotosController#create 

The AWS Access Key Id you provided does not exist in our records. 

如果我試圖將訪問和祕密直接放入文件,它的工作原理是完美的。同時,我試圖將兩個ENV變量打印到視圖中,或者在控制檯中,我可以看到它們的值沒問題。

我不明白爲什麼它不認識它。

回答

9

解決!

我發現回答這個問題,這裏 Ruby on Rails: Can you put Ruby code in a YAML config file?

解決方案:YAML文件理解的代碼在ERB格式。

打印<%=%>中的ENV變量的作品。

access_key_id: <%= ENV['S3_KEY'] %> 
secret_access_key: <%= ENV['S3_SECRET'] %> 
+0

哇,只是救了我一些時間。謝謝! – 2012-12-18 14:44:21

+0

他們最近是否改變了這一點?看起來像'<%= ENV ['something'] $>'正在評估''ENV ['something']「'。 – Noz 2014-01-02 18:47:31

+0

@Noz使用此鏈接http://stackoverflow.com/questions/3277428/ruby-on-rails-can-you-put-ruby-code-in-a-yaml-config-file – JehandadK 2014-07-19 13:35:05