ruby-on-rails - 将 User-Agent 重写为所有 Open URI 请求

标签 ruby-on-rails ruby paperclip user-agent open-uri

使用 Rails 4.2.10

我想从 URL 打开图像,感谢 mongoid papaerclipopen_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/

相关文章:

ruby-on-rails - 使用 Rails 和 Paperclip 的 s3 的简单 Amazon IAM 策略

ruby-on-rails - Authlogic_OAuth 在 Rails 3 中失败,错误为 "uninitialized constant UserSession::OAuth"

ruby - unicorn 无法写入pid文件

ruby - 想要回显新行字符

ruby-on-rails - 使用回形针 gem 重新生成缩略图

ruby-on-rails - base64 照片和回形针 -Rails

ruby-on-rails - Rails3 和 Arel 使用 IN 和子选择进行选择

ruby-on-rails - Paypal、定期计费和 ActiveMerchant

ruby-on-rails - 测试构建在 RESTful Web 服务之上的应用程序

ruby - 正则表达式以匹配最后一次出现