需要后open-uri
,可以通过Kernel#open
. 但是,尝试使用 https 执行此操作会导致根证书错误,因为 ruby 没有所有根证书。
这可以像这样解决,但那是为了使用Net::HTTP
带有块的对象。
是否有一种优雅的方式来全局设置use_ssl
和ca_file
用于Net::HTTP
库,以便它将应用于我的整个应用程序以及类似的命令Kernel#open
?
好吧,几个小时后,我想出了这个:
require 'open-uri'
require 'net/https'
module Net
class HTTP
alias_method :original_use_ssl=, :use_ssl=
def use_ssl=(flag)
self.ca_file = "/path/to/ca-bundle.crt"
self.original_use_ssl = flag
end
end
end
在这里进行更多描述:https ://gist.github.com/996510