2017-10-04 90 views
2

使用Rails 4.2.10重寫用戶代理所有打開的URI請求

我想從URL感謝打開圖像mongoidpapaerclipopen_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

+1

沒看到選項報頭設置爲所有請求,但[文檔】(http://ruby-doc.org/stdlib- 2.4.2/libdoc/open-uri/rdoc/OpenURI.html)顯示瞭如何爲特定請求設置標題。在一個方法中包裝請求,該方法總是設置標題應該給你你想要的。 – ulferts

+0

是的,但我怎麼能做到這一點,因爲它是一個依賴我不能修改此代碼? – BastienSander

回答

1

幸運的是,你的用例沒有這樣的事情,作爲一個類正在關閉修改紅寶石。

在初始化程序中爲您的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