首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Rails:零星的Carrierwave/Excon错误

Rails:零星的Carrierwave/Excon错误
EN

Stack Overflow用户
提问于 2015-01-22 06:58:12
回答 1查看 2.4K关注 0票数 6

使用carrierwave作为我们的上传程序,我们每周都会从我们的生产应用程序中得到几个Excon错误。例如:

代码语言:javascript
复制
Excon::Errors::BadRequest: Expected(200) <=> Actual(400 Bad Request) excon.error.response :body => "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Error><Code>IncompleteBody</Code><Message>The request body terminated unexpectedly</Message>

我们已经开始将上传过程包装在一个retry块中,并且在再次尝试之后似乎总是工作得很好,但我想知道是否有更好的解决方案,因为这在一段时间后变得笨拙。在我看来,这些错误应该在较低的级别上处理。有没有更好的方法来处理这些问题?

以下是我们的生产配置:

代码语言:javascript
复制
config.storage = :fog
config.root = Dir.tmpdir
config.cache_dir = 'carrierwave'
config.fog_credentials = {
  provider: 'AWS',
  aws_access_key_id: ENV['AWS_ACCESS_KEY_ID'],
  aws_secret_access_key: ENV['AWS_ACCESS_KEY'],
}

config.fog_directory = ENV['AWS_S3_BUCKET']
config.fog_public = false
config.fog_authenticated_url_expiration = 7.days.to_i

config.enable_processing = true

我们使用的是gem版本:

代码语言:javascript
复制
fog (1.27.0)
carrierwave (0.10.0)
excon (0.43.0)
EN

回答 1

Stack Overflow用户

发布于 2015-02-04 01:13:56

在我像这样编写我的初始化器之后,它又开始工作了,在克服了几个问题之后,我认为AWS端点已经改变了:

代码语言:javascript
复制
CarrierWave.configure do |config|
  config.fog_credentials = {
      :provider               => 'AWS',
      :aws_access_key_id      => ENV['S3_KEY'],
      :aws_secret_access_key  => ENV['S3_SECRET'],
      :endpoint               => "https://s3.amazonaws.com",
      :region                 => ENV['S3_REGION'] 
  }
  config.fog_directory  = ENV['S3_BUCKET']
end

此外,我认为我的地区是"us-west-2",看着我的AWS管理控制台,但它只是在我切换到"eu-west-1“时才开始工作。

后来我意识到,指定该端点并不是一个好主意,事实上,最好将它留在这种情况下。无论如何,正如游说者指出的那样,改用carrierwave-aws解决了这个问题。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28078436

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档