2014-08-31 41 views
3

我正在使用carriervawe和fog與S3存儲桶。我得到的錯誤,在發展的標題(當我運行rails srake db:migrate)用下面的代碼:缺少所需的參數:aws_access_key_id,aws_secret_access_key

CarrierWave.configure do |config| 
    config.fog_credentials = { 
    provider: "AWS", 
    aws_access_key_id: ENV['AWS_ACCESS_KEY_ID'], 
    aws_secret_access_key: ENV['AWS_SECRET_ACCESS_KEY'] 
    } 
    config.asset_host = "http://xxx.cloudfront.net" 
    config.fog_directory = 'xxx' 
    config.fog_attributes = {'Cache-Control'=>'max-age=315576000'} 
    config.storage = :fog 
end 

我也嘗試使用(如建議here

<%= ENV['AWS_ACCESS_KEY_ID'] %> 

,但我得到這個錯誤:

syntax error, unexpected '<' (SyntaxError) 

我的變量是application.yml文件

AWS_ACCESS_KEY_ID: AKIAIxxx... 
AWS_SECRET_ACCESS_KEY: 1xxx... 
+0

「AWS_ACCESS_KEY_ID:」和密鑰之間是否有額外的空格?可能是語法錯誤。 – 2014-08-31 21:48:43

+0

是的,我從實際文件中複製了它。 – 2014-08-31 21:51:12

+0

確保冒號和密鑰開頭之間只有一個空格。 – 2014-08-31 21:51:42

回答

4

不知道爲什麼,但由於某種原因,您的環境變量可能被評估爲零。我喜歡使用figaro gem來管理我的環境變量。

只需添加

gem "figaro" 

到你的Gemfile。

然後運行

figaro install 

,這將創造一個application.yml文件,並將其添加到您的.gitignore(出於安全原因,很重要)。在此之後,您應該可以將您的AWS密鑰添加到application.yml,並像您當前那樣在carrierwave配置中訪問它們。

0

如果這是來自Michael Hartl的教程,我通過將初始化程序重命名爲carrierwave.rb而不是carrier_wave.rb來解決我的問題,如本教程中所建議的。然後我重新運行了git和Heroku命令,並在Heroku生產服務器上運行。

相關問題