红宝石3.0.1
轨道 6.1.3.2
执行 Paypal OrdersCreateRequest 失败并出现此错误
NoMethodError (undefined method `escape' for URI:Module):
Run Code Online (Sandbox Code Playgroud)
.rvm/gems/ruby-3.0.1/gems/paypalhttp-1.0.0/lib/paypalhttp/serializers/form_encoded.rb:8:in `block in encode'自 paypalhttp v1.0.0 起,回溯指向包含此行的内容
encoded_params.push("#{URI.escape(k.to_s)}=#{URI.escape(v.to_s)}")
Run Code Online (Sandbox Code Playgroud)
显然 URI.escape 方法在 ruby 3 中已被删除,如此处所述https://github.com/ruby/uri/issues/14
有没有解决方法,或者我必须等待 Paypal 更新 gem?我不想降级到 ruby 2.x
你可以给它打上猴子补丁:
# /config/initializers/functions_overrides.rb
require 'uri'
module URI
def self.escape(*args)
URI.encode_www_form_component(*args)
end
end
Run Code Online (Sandbox Code Playgroud)
更新:
添加require 'uri'并注释初始值设定项路径。感谢您的提示@prd-rsd。
| 归档时间: |
|
| 查看次数: |
555 次 |
| 最近记录: |