优雅地通过open-uri使用Kernel#open for https

时间:2011-05-27 23:22:36

标签: ruby ssl https open-uri net-http

在要求open-uri之后,可以通过Kernel#open方便地从网上下载和使用文件。但是,尝试使用https执行此操作会导致root证书错误,因为ruby没有所有根证书。

这可以解决like this,但那是使用带有块的Net::HTTP对象。

是否有一种优雅的方式可以为use_ssl库全局设置ca_fileNet::HTTP,以便它适用于我的整个应用,以及Kernel#open等命令?

1 个答案:

答案 0 :(得分:3)

好吧,几个小时后我想出了这个:

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