我们已经构建了一个rails应用程序,其中包含多个用户和每个用户的图像.在我们的localhost上完成所有开发工作,我们为用户和照片提供了工作种子......但是现在我们正在尝试使用S3进行图像存储,我们在...期间遇到错误...迁移步骤,执行此操作时:
rake db:migrate:reset
对这个问题道歉,但是我们已经在这个问题上持续了11个小时,经历了关于这个问题的每一个相关的Stack问题.很多类似的帖子都有NoSuchBucket错误和其他类型的问题,但我们没有提出任何建议的修改已经解决了我们的问题...也许它与我们正在使用的宝石的最新版本有关?
我们使用的是Rails 3.0.4,Ruby 1.8.7,Paperclip 2.3.8,aws-s3 0.6.2
我们使用/ migrate /文件夹中的seeds.rb文件为初始用户添加种子,为每个用户添加照片.在本地计算机上存储文件和图像(使用回形针,但不是S3)时,这始终正常工作.我们还测试了删除种子文件,只是使用工作应用程序创建一个新用户并得到了同样的错误:
凭据不是路径,文件或散列
对于用户模块,我们已经测试了通过(a)yml文件和(b)直接在用户模型中设置以下S3密钥的选项.access_key_id:'秘密'secret_access_key:'秘密'
我们已尝试从我们的localhost(尚未使用heroku)执行此操作,我们也尝试通过Heroku运行此操作.
我们似乎尝试了这些键的布局的每个排列,但我们最常得到的错误是:
无法将Module转换为Hash
谷歌搜索此错误消息返回零结果,所以我们不知道那里发生了什么.这是最令人沮丧的部分......似乎每一次尝试都让我们回到了这个错误.
我们也试过了两个:
(1)硬编码用户模型中的访问密钥,如下所示:
:access_key_id => ENV['accesskeyid'],
:secret_access_key => ENV['secretaccesskey'],
在这种情况下,我们经常遇到这个错误:
您没有提供所需的访问密钥.请提供access_key_id和secret_access_key.
令人沮丧,因为我们总是列出两个项目,使用和不使用引号进行测试,更改订单等.
我们尝试了(a)与ENV ['accesskeyid']和(b)没有那些...简单地blahblah =>'accesskeyid'.
(2)将密钥放入yml文件中,如下所示:
has_attached_file :photo,
  :storage => :s3,
  :s3_credentials => "#{Rails.root}/config/s3.yml",
  :path => "/:photo/:filename"
在yml文件中使用此文件:
development:
  access_key_id: accesskeyid
  secret_access_key: secretaccesskey
  bucket: ourbucketname
production:
  access_key_id: accesskeyid
  secret_access_key: secretaccesskey
  bucket: ourbucketname
我们尝试使用键周围的单引号,没有.
我们还尝试在模型中定义存储桶,而不是在yml文件中定义存储桶,并得到相同的错误.
(3),这样设置:
如果Rails.env =="production"S3_CREDENTIALS = {:access_key_id => ENV ['S3_KEY'],:secret_access_key => ENV ['S3_SECRET'],:bucket =>"ourbucket"}否则S3_CREDENTIALS = Rails.root.join ("config/s3.yml")
结束has_attached_file:photo,:storage =>:s3,:styles => …
我有一个非常简单的模型和附件
has_attached_file :upload,
    :storage => :s3,
       :bucket => 'bestofbauer',
       :s3_credentials => {
         :access_key_id => ENV['MyAccessKEY'],
         :secret_access_key => ENV['MySecretKey']
       }
我有一个名为bestofbauer的s3桶设置.
我知道我可以将凭证重构为初始化程序,但我还没有得到这个来保存附件,所以我并不担心它.
当我运行对象及其附件的保存时,我得到:
RuntimeError in RecommendationsController#create
Missing credentials
我已经倾倒了:使用Paperclip和Amazon s3上传照片时缺少证书,但这并没有解决我的问题.
我使用以下宝石:
gem "paperclip"
gem "sws-sdk"
gem 'aws-s3'
还有其他想法吗?
我想在aws上传图片.
class Asset < ActiveRecord::Base
  belongs_to :post
  attr_accessible :image
  has_attached_file :image, :styles => { :medium => "640x480>", 
                                     :thumb => "100x100#"},
  :storage => :s3,
   :s3_credentials => "#{Rails.root}/config/s3.yml",
  :path => ":attachment/:id/:style.:extension",
  :bucket => 'yourbucket'
end
s3.yml
development:
  access_key_id: xxxxxxxx
   secret_code: xxxxx
我收到了一条消息
 AWS::Errors::MissingCredentialsError in PostsController#create
Missing Credentials.
 Unable to find AWS credentials.  You can configure your AWS credentials
 a few different ways:
 * Call AWS.config with :access_key_id and :secret_access_key
 * Export AWS_ACCESS_KEY_ID and AWS_SECRET_ACCESS_KEY to ENV
* On EC2 you can run …