使用 Rails 4.2.10
我想从 URL 打开图像,感谢 mongoid
papaerclip
和open_uri
它在 95% 的用例中完美运行,但有些网站在看到 user-agent
时向我发送 404请求的内容是Ruby
.
问题出在库 paperclip
上=>
paperclip/io_adapters/uri_adapter.rb in download_content at line 48
def download_content
options = { read_timeout: Paperclip.options[:read_timeout] }.compact
open(@target, **options)
end
如果我可以在这里添加一个选项,那就太好了,但我认为这是不可能的,所以我想用我的 user-agent
添加一个默认 header 所有由 open_uri
完成的请求
最佳答案
幸运的是,对于您的用例来说,在 ruby 中不存在针对修改而关闭的类之类的事情。
在初始化程序中向 Rails 应用添加补丁。结构大致如下:
在config/initializers/some_任意_name.rb
module UriAdapterPatch
def open(url, options)
# alter the objects however you want
super(altered_or_original_url, altered_or_original_options)
end
end
Paperclip::UriAdapter.prepend(UriAdapterPatch)
关于ruby-on-rails - 将 User-Agent 重写为所有 Open URI 请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46560896/