2012-04-28 80 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