2017-10-04 10 views
2

사용 레일 4.2.10재 작성 사용자 에이전트

나는 mongoidpapaerclipopen_uri

그것은 완벽하게 사용 사례의 95 %가 작동하지만 일부 웹 사이트 전송에 URL 감사에서 이미지를 열 싶습니다 그들이 대답의 user-agent을 볼 때 나 404는 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 

함께 with all user-agent 모든 요청을 완료했습니다 open_uri

+1

모든 요청에 ​​헤더를 설정하는 옵션이 있지만, [문서] (참조하지 않았나요 http://ruby-doc.org/stdlib- config/initializers/some_arbitrary_name.rb에서 2.4.2/libdoc/open-uri/rdoc/OpenURI.html)에서는 특정 요청에 대한 헤더를 설정하는 방법을 보여줍니다. 항상 헤더를 설정하는 메소드에서 요청을 래핑하면 원하는 것을 얻을 수 있습니다. – ulferts

+0

예,하지만이 코드를 수정할 수없는 의존성이므로 어떻게해야합니까? – BastienSander

답변

1

운 좋게도 루비의 수정을 막는 클래스는 없습니다.

이니셜 라이저에 레일즈 애플리케이션에 패치를 추가하십시오. 구조는 대략 다음과대로 :

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