2012-03-08 59 views
3

我有一個非常簡單的模型和附件如何解決「缺少憑據」與回形針和S3存儲在軌道3

has_attached_file :upload, 
    :storage => :s3, 
     :bucket => 'bestofbauer', 
     :s3_credentials => { 
     :access_key_id => ENV['MyAccessKEY'], 
     :secret_access_key => ENV['MySecretKey'] 
     } 

我有一個水桶設置與S3稱爲bestofbauer。

我知道我可以重構到初始化的憑據,但我還沒有得到這個保存附件,所以我沒有擔心它。

當我運行保存的對象及其attachement我得到:

RuntimeError in RecommendationsController#create 

Missing credentials 

我已經倒在:Credentials missing when uploading photos with Paperclip and Amazon s3但這並沒有解決我的問題。

我使用下面的寶石:

gem "paperclip" 
gem "sws-sdk" 
gem 'aws-s3' 

任何其他的想法?

+0

有人嗎?我覺得我有一切就位,但仍然得到憑證問題 – 2012-03-08 23:58:44

回答

12

您需要設置您的環境變量。這裏有兩種不同的方式做到這一點:

  1. 運行rails server訪問你需要包括你的鑰匙您的S3帳戶上的每個時間或任何其他命令:

    $ MyAccessKEY=ACCESS_KEY MySecretKEY=SECRET_KEY rails server 
    
  2. 我假設你」重新使用bash所以編輯~/.bash_rc~/.bash_profile設置環境變量

    export MyAccessKEY=ACCESS_KEY 
    export MySecretKEY=SECRET_KEY 
    

    然後打開一個新的終端窗口,仔細檢查,他們正在設置

    $ echo $MyAccessKey 
    > ACCESS KEY PRINTS OUT HERE 
    

如果要部署到Heroku的,那麼你會希望有提供你的環境變量,以及:

$ heroku config:add MyAccessKEY=ACCESS_KEY MySecretKEY=SECRET_KEY 

您可以查看Heroku配置:

$ heroku config 

它會列出你爲該應用程序的所有配置變量。

您可能想要將您的S3存儲桶名稱放在ENV設置中,以便在本地進行測試時不會弄亂存儲桶。

+0

爲了在本地處理您的密鑰,我推薦[dotenv](https://github.com/bkeepers/dotenv)。 – 2015-07-31 14:08:30