Rails / Paperclip / S3神秘错误:未定义的方法“global_endpoint?”

所以我上周将一个Rails应用程序从3.0升级到4.0,自从我得到奇怪的错误,似乎指向我没有改变的随机位置,我无法重现它们。

一个这样的错误是这样的:

NoMethodError: undefined method `global_endpoint?' for AWS::S3:Class [GEM_ROOT]/gems/aws-sdk-1.46.0/lib/aws/core/configuration.rb:441 /gems/aws-sdk-1.46.0/lib/aws/core/configuration.rb:441 in "block in add_service" /gems/aws-sdk-1.46.0/lib/aws/core/configuration.rb:361 in "call" /gems/aws-sdk-1.46.0/lib/aws/core/configuration.rb:361 in "block in add_option" /gems/aws-sdk-1.46.0/lib/aws/core/configuration.rb:381 in "block (2 levels) in add_option_with_needs" /gems/aws-sdk-1.46.0/lib/aws/core/configuration.rb:381 in "each" /gems/aws-sdk-1.46.0/lib/aws/core/configuration.rb:381 in "inject" /gems/aws-sdk-1.46.0/lib/aws/core/configuration.rb:381 in "block in add_option_with_needs" /gems/aws-sdk-1.46.0/lib/aws/core/service_interface.rb:73 in "initialize" /gems/paperclip-4.1.1/lib/paperclip/storage/s3.rb:239 in "new" /gems/paperclip-4.1.1/lib/paperclip/storage/s3.rb:239 in "obtain_s3_instance_for" /gems/paperclip-4.1.1/lib/paperclip/storage/s3.rb:233 in "s3_interface" /gems/paperclip-4.1.1/lib/paperclip/storage/s3.rb:243 in "s3_bucket" /gems/paperclip-4.1.1/lib/paperclip/storage/s3.rb:247 in "s3_object" /app/models/my_model.rb:49 in "block in my_download_url" 

这将随机出现在具有在S3上保存的回形针附件的模型的页面上。 重新加载页面有时会再次导致它,但通常它会正确地重新加载而不会发生意外。

我不知道该如何调试它,因为我甚至无法随意实现它。

任何帮助或想法?

解决了! 只花了一年半的时间搜索! 事实certificate它与libxml-ruby gem中的一些坏内存钩子有关。 看这里:

https://github.com/sparklemotion/nokogiri/issues/881 https://github.com/sparklemotion/nokogiri/issues/1364

从我的Gemfile中删除libxml-ruby修复了它。