在NET::HTTP中找不到Ruby Openssl
我得到以下错误: /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文件,改变了一件事,只是为了看看会发生什么,我这样做了:在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:
@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