Элегантно используя Kernel # open для https через open-uri - PullRequest
1 голос
/ 28 мая 2011

После запроса open-uri можно удобно загружать и использовать файлы из Интернета через Kernel#open.Однако попытка сделать это с помощью https приводит к ошибке корневого сертификата, поскольку ruby ​​не имеет всех корневых сертификатов.

Это можно решить , например, , но это для использованияNet::HTTP объект с блоком.

Есть ли элегантный способ глобально установить use_ssl и ca_file для библиотеки Net::HTTP, чтобы она применялась ко всему моему приложению, и такие команды, как Kernel#open * * 1014

1 Ответ

3 голосов
/ 28 мая 2011

Хорошо, через пару часов я придумал это:

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

...