0

红宝石 3​​.0.1

导轨 6.1.3.2

执行 Paypal OrdersCreateRequest 失败并出现此错误

NoMethodError (undefined method `escape' for URI:Module):

从 paypalhttp v1.0.0开始,回溯指向的.rvm/gems/ruby-3.0.1/gems/paypalhttp-1.0.0/lib/paypalhttp/serializers/form_encoded.rb:8:in `block in encode'包含此行

encoded_params.push("#{URI.escape(k.to_s)}=#{URI.escape(v.to_s)}")

显然 URI.escape 方法已在 ruby​​ 3 中删除,如此处所述https://github.com/ruby/uri/issues/14

是否有解决方法,或者我必须等待 Paypal 更新 gem?我不想降级到 ruby​​ 2.x

4

1 回答 1

0

你可以猴子补丁它:

module URI
  def self.escape(*args)
    URI.encode_www_form_component(*args)
  end
end
于 2021-12-01T18:00:28.557 回答