警告:URI.escape 已过时

问题描述 投票:0回答:2

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

这是给出错误的行(位于 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()
命令,但后来我收到了此错误;

任何人都可以告诉我如何摆脱这个错误并找到可行的替代方案吗? 我的 Ruby 版本:

ruby 2.7.2p137
我的 Rails 版本:
Rails 6.1.4

谢谢你。

ruby-on-rails ruby
2个回答
2
投票

如果您需要的只是

URI.escape
的有效实现,您可以自己重新实现它:

# config/initializers/uri.rb

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

这将有效地消除警告并将

escape
调用委托给默认解析器,这也适用于 Ruby 3。

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


0
投票

这对我有用

# config/initializers/uri.rb
module URI
  def self.escape url
    URI::Parser.new.escape url
  end
end
© www.soinside.com 2019 - 2024. All rights reserved.