2017-10-04 12 views
2

使用して、レール4.2.10書き換えのUser-Agent

私はmongoidpapaerclipopen_uri

それは完全にユースケースの95%で動作しますが、いくつかのウェブサイトの送信にURLのおかげから画像を開きたいです私は404彼らは要求のuser-agentRubyで見るとき。

問題は、私はここにオプションを追加することができれば、それは素晴らしいことだが、私はそれはので、私はデフォルトのヘッダーを追加したいことができないと思うの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 /オープン-URI/RDOC/OpenURI.html)は、特定のリクエストのヘッダを設定する方法を示しています。ヘッダーを設定するメソッドでリクエストをラップすると、必要なものが得られます。 – ulferts

+0

はい、しかしどのように私はそれは私がこのコードを変更することはできません依存性があるとして、これを行うために管理することができますか? – BastienSander

答えて

1

幸いなことに、あなたのユースケースでは、ルビーの変更に対してクラスが閉鎖されているようなことはありません。

は初期化子でのレールのアプリにパッチを追加します。以下のような構造は、およそある: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