在NET::HTTP中找不到Ruby Openssl

在NET::HTTP中找不到Ruby Openssl,openssl,net-http,ruby-1.8.7,Openssl,Net Http,Ruby 1.8.7,我得到以下错误: /Users/user_name/.rbenv/versions/1.8.7-p375/lib/ruby/1.8/net/https.rb:124:in `use_ssl=':未初始化的常量Net::HTTP::OpenSSL(namererror) 所以,我打开了https文件,改变了一件事,只是为了看看会发生什么,我这样做了: @ssl_context = ::OpenSSL::SSL::SSLContext.new 如果您看不到它,我将:添加到OpenSSL::SSL:

我得到以下错误:

/Users/user_name/.rbenv/versions/1.8.7-p375/lib/ruby/1.8/net/https.rb:124:in `use_ssl=':未初始化的常量Net::HTTP::OpenSSL(namererror)

所以,我打开了https文件,改变了一件事,只是为了看看会发生什么,我这样做了:

@ssl_context = ::OpenSSL::SSL::SSLContext.new
如果您看不到它,我将
添加到
OpenSSL::SSL::SSLContext。在方法中添加新的

def use_ssl=(flag)
问题就解决了

现在很明显,我无法直接编辑ruby libs的源代码,因此我在脚本顶部添加了以下内容作为补丁:

module Net
  class HTTP

    def use_ssl=(flag)
      flag = (flag ? true : false)
      raise IOError, "use_ssl value changed, but session already started"\
          if started? and @use_ssl != flag
      if flag and not @ssl_context
        @ssl_context = ::OpenSSL::SSL::SSLContext.new
      end
      @use_ssl = flag
    end
  end
end
但是,我得到了一个错误:

scripts/get_social_data.rb:27:in`use_ssl=':未初始化常量OpenSSL(NameError)

尽管已经做了:

require 'openssl'
在我剧本的顶端

为什么即使我需要它,
OpenSSL
也不存在

我猜我错过了什么,但我真的看不到

编辑:


嗯,我注意到Openssl(我正在维护这个项目)在GEM文件中,我很确定它不应该在那里,我卸载了它,但它仍然不工作。

好的,所以,在浏览互联网并尝试各种方法后,我找到了解决问题的方法,我必须使用以下命令重新安装ruby 1.8.7-p375:

RUBY\u CONFIGURE\u OPTS=--with openssl dir=rbenv install 1.8.7-p375

opensslDir至少可以在osx上找到,并与自制软件一起安装,如下所示:

brew列表openssl

你会得到一堆dir,只需复制所有dir中的位,它可能看起来像这样:

/usr/local/ceral/openssl/1.0.2h