Rails 3 Carrierwave-Fog-S3错误:预期(200)< =>实际(404未找到)

时间:2011-05-20 06:02:56

标签: ruby-on-rails-3 amazon-s3 carrierwave

我正在使用Carrerwave 0.5.3并在我的图片控制器的Create方法中调用Picture.save时出现404错误。根据lib / carrierwave / storage / s3.rb中的说明,我在初始化文件中有以下内容(config / initializers / carrierwave_fog.rb):

CarrierWave.configure do |config|
     config.s3_access_key_id = "xxxxx"
     config.s3_secret_access_key = "xxxxx"
     config.s3_bucket = "mybucket"  #already created in my S3 account
end

在photo_uploader.rb中我有:

class PhotoUploader < CarrierWave::Uploader::Base
  include CarrierWave::RMagick
  storage :s3
  def store_dir
    "uploads"  # already created in my s3 account
  end
  def cache_dir
    "uploads/cache"  #already created in my s3 account
  end
end

确切错误:

Excon::Errors::NotFound in PicturesController#create
Expected(200) <=> Actual(404 Not Found)
  request => {:expects=>200}
  response => #<Excon::Response:0x00000104a72448 @body="", @headers={}, @status=404>

我在Carrierwave and s3 with heroku error undefined method `fog_credentials='找到了一个稍微类似的问题。但是按照我现在的方式进行设置显然在这种情况下有效。不幸的是,它不适合我。

我在我的存储桶中放了一张照片并将权限设置为公开,并可以通过浏览器访问该图片。因此,AWS S3方面的工作似乎正在发挥作用。

不确定下一步该怎么做。有什么想法吗?

2 个答案:

答案 0 :(得分:2)

好吧,我睡了一晚,第二天又回来了,一切都很好。不知道为什么它突然开始工作。

答案 1 :(得分:0)

确保您的文件名已清理,并且不包含空格或斜杠等无效字符。 要清理字符串,可以在其上调用gsub方法。以下方法调用将清理文件以上传到S3,Google云端存储等。

"Invalid\ file *& | | name.png".gsub(/[^0-9A-z.\-]/, '_')