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

7 amazon-s3 ruby-on-rails-3 carrierwave fog

我目前收到以下错误:Excon::Errors::SocketError - Broken pipe (Errno::EPIPE)上传大于150kb的图像时.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
Run Code Online (Sandbox Code Playgroud)

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
Run Code Online (Sandbox Code Playgroud)

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
Run Code Online (Sandbox Code Playgroud)

Ale*_*lex 8

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