嗨,我正在尝试从 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
如果您需要的只是
URI.escape
的有效实现,您可以自己重新实现它:
# config/initializers/uri.rb
module URI
def self.escape(*args)
DEFAULT_PARSER.escape(*args)
end
end
这将有效地消除警告并将
escape
调用委托给默认解析器,这也适用于 Ruby 3。
请注意,这只是一个消除警告的快速补丁。从长远来看,您应该找到过时宝石的替代品。
这对我有用
# config/initializers/uri.rb
module URI
def self.escape url
URI::Parser.new.escape url
end
end