【问题标题】:Where do I put an extension to open_uri我在哪里放置 open_uri 的扩展
【发布时间】:2013-05-29 09:31:23
【问题描述】:

我正在尝试从 Twitter 获取图片:

open("http://api.twitter.com/1/users/profile_image/barackobama.png?size=bigger")

但我明白了:

RuntimeError: redirection forbidden: http://... -> https://...

有一个open issue,我似乎可以使用extension to open_uri,但我不知道它是如何工作的。例如,如果我将它放在lib/ 中,或者如果我将模块粘贴到控制台中,它仍然不起作用。有什么想法吗?

【问题讨论】:

    标签: ruby-on-rails ruby redirect open-uri


    【解决方案1】:

    我认为放置此类补丁的正确位置是在config/initializers 内的文件中,即config/initializers/open_uri_allow_unsafe_redirects_patch.rb。在重新打开 OpenURI 模块之前,您必须 require 'open-uri'

    require 'open-uri'    
    module OpenURI
      # the rest of the file here...
    end
    

    然后你必须调用open 将选项allow_unsafe_redirects 设置为true

    open('http://api.twitter.com/1/users/profile_image/barackobama.png?size=bigger',
         allow_unsafe_redirects: true)
    

    您可以在 Ruby on Rails guide 上找到有关初始化程序文件的更多信息

    【讨论】:

    • 谢谢@toro2k,我已经尝试过了,但我仍然得到“禁止重定向”。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-03-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-25
    • 2017-06-27
    相关资源
    最近更新 更多