Carrierwave + s3 + fog(Excon :: Errors :: SocketError)

时间:2012-12-30 11:10:27

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

当我上传大于150kb的图片时,我目前收到以下错误:Excon::Errors::SocketError - Broken pipe (Errno::EPIPE)。 150kb以下的图像正常工作。研究表明其他人也遇到过这个问题,但我还没有找到解决方案。

错误消息

Excon::Errors::SocketError at /photos

Message Broken pipe (Errno::EPIPE)
File    /Users/thmsmxwll/.rvm/rubies/ruby-1.9.3-p194/lib/ruby/1.9.1/openssl/buffering.rb
Line    375

image_uploader.rb

class ImageUploader < CarrierWave::Uploader::Base
  include CarrierWave::RMagick

  storage :fog

  include CarrierWave::MimeTypes
  process :set_content_type

  def store_dir
    "uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}"
  end

  version :large do
    process :resize_to_limit => [800, 600]
  end
end

carrierwave.rb

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'],
    :region                 => 'us-east-1'
  }
  config.fog_directory  = 'abcd'                   
  config.fog_public     = true                                  
  config.fog_attributes = {'Cache-Control'=>'max-age=315576000'}
end

2 个答案:

答案 0 :(得分:8)

对我来说,解决方案要求我在美国标准区域重建桶。最初,该存储桶位于俄勒冈州,虽然我没有在载波设置中指定区域,但即使文件非常小,也无法完成上传。

答案 1 :(得分:1)

我遇到了同样的问题,我注意到只有当我上传大文件(400kb)时才会发生,而较小的(100kb)则可以正常工作。