2012-03-08 28 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