重写用户代理所有打开的URI请求
问题描述:
使用Rails 4.2.10
重写用户代理所有打开的URI请求
我想从URL感谢打开图像mongoid
papaerclip
和open_uri
它完美地工作在用例的95%,但一些网站发送我404的时候看到user-agent
的请求是Ruby
。
的问题是与LIB 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
所有请求完成open_uri
答
幸运的是,你的用例没有这样的事情,作为一个类正在关闭修改红宝石。
在初始化程序中为您的rails应用程序添加补丁。的结构大致如下:
在config/initializers/some_arbitrary_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)
+0
完美的工作谢谢;) – BastienSander
没看到选项报头设置为所有请求,但[文档】(http://ruby-doc.org/stdlib- 2.4.2/libdoc/open-uri/rdoc/OpenURI.html)显示了如何为特定请求设置标题。在一个方法中包装请求,该方法总是设置标题应该给你你想要的。 – ulferts
是的,但我怎么能做到这一点,因为它是一个依赖我不能修改此代码? – BastienSander