警告:URI.escape 已过时

时间:2021-07-05 08:49:39

标签: ruby-on-rails ruby

嗨,我正在尝试从 quickbooks 获取 Oauth2 访问权限,但我在来自 Rails 服务器的命令提示符下收到此警告,但没有任何反应服务器只是不断加载相同的警告;

enter image description here

这是给出错误的行(位于 gem 中);

    def escape(value)
      URI::escape(value.to_s, OAuth::RESERVED_CHARACTERS)
    rescue ArgumentError
      URI::escape(value.to_s.force_encoding(Encoding::UTF_8), OAuth::RESERVED_CHARACTERS)
    end

我查看了其他有关此错误的抱怨,并尝试将 URI::escape() 命令替换为 CGI::escape(),但随后出现此错误;

enter image description here

谁能告诉我如何摆脱这个错误并找到一个可行的替代方案? 我的 Ruby 版本:ruby 2.7.2p137 我的 Rails 版本:Rails 6.1.4
谢谢。

1 个答案:

答案 0 :(得分:0)

如果您只需要 URI.escape 的有效实现,您可以自己重新实现它:

# config/initializers/uri.rb

module URI
  def self.escape(*args)
    DEFAULT_PARSER.escape(*args)
  end
end

这将有效地消除警告并将 escape 调用委托给默认解析器,这也适用于 Ruby 3。

请注意,这只是一个快速消除警告的补丁。从长远来看,您应该找到过时 gem 的替代品。

相关问题