私有方法 `open' 调用 URI:Module 错误

private method `open' called for URI:Module ERROR

正在使用 gem 但它在较旧版本上抛出错误

private method `open' called for URI:Module

提取的源代码(大约第 135 行): 133 134 135 136 137 138

  url = construct_url(path)
  #URI::open(url, read_timeout: 600).read
  URI.open(url, read_timeout: 600).read
rescue OpenURI::HTTPError => e
  if error = JSON.load(e.io.read)["error"]
    puts "server returns error for url: #{url}"

我是 运行 Rails 4.2.6 Ruby ruby 2.3.8p459

我实在是太不知所云了:(

这是调用 gem 中错误的代码 我解压并重建了上面的注释,因为找不到文档 bth URI::open( 和 URI.open 抛出相同的错误,调用了私有方法。

                require 'google_search_results' 
            require 'open-uri'
    
            params = {
              q: @q,
              location: "United Kingdom",
              hl: "en",
              gl: "uk",
              google_domain: "google.co.uk",
              api_key: ENV["google_search_api_key"],
              num: 20
            }
    
            search = GoogleSearch.new(params)
            @hash_results = search.get_hash

我知道它与 Rails / Ruby 的版本有关,我 运行 但不知道去哪里查找或要问的问题的术语。

你可以使用这样的方法from ruby 2.4 onwards, but for 2.3你应该只将它用作:

open(url, read_timeout: 600).read