Ruby 在 NET::HTTP 中找不到 Openssl
Ruby Openssl not being found in NET::HTTP
我收到以下错误:
/Users/user_name/.rbenv/versions/1.8.7-p375/lib/ruby/1.8/net/https.rb:124:in
`use_ssl=': uninitialized constant Net::HTTP::OpenSSL (NameError)
所以,我打开了 https 文件并更改了一件事,看看会发生什么,我这样做了:
@ssl_context = ::OpenSSL::SSL::SSLContext.new
如果你看不到,我在方法里把::
加到OpenSSL::SSL::SSLContext.new
:
def use_ssl=(flag)
然后问题就消失了。
现在显然我不能直接编辑 ruby 库的源代码所以我将以下内容添加到我的脚本顶部作为补丁:
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=': uninitialized constant OpenSSL (NameError)
尽管已经完成:
require 'openssl'
在我的脚本的顶部。
为什么 OpenSSL
不存在,即使我需要它?
我猜我遗漏了一些东西,但老实说我看不到它。
编辑:
嗯,我注意到 Openssl(我正在维护这个项目)在 gemfile 中,我很确定它不应该在那里,我卸载了它但它仍然无法工作。
好的,所以,在浏览互联网并尝试各种方法后,我找到了解决问题的方法,我不得不使用以下命令重新安装 ruby 1.8.7-p375:
RUBY_CONFIGURE_OPTS=--with-openssl-dir= rbenv install 1.8.7-p375
至少可以在 osx 上找到 opensslDir,并像这样用自制软件安装:
brew list openssl
你会得到一堆目录,只需复制所有目录中的位,它可能看起来像这样:
/usr/local/Cellar/openssl/1.0.2h
我收到以下错误:
/Users/user_name/.rbenv/versions/1.8.7-p375/lib/ruby/1.8/net/https.rb:124:in `use_ssl=': uninitialized constant Net::HTTP::OpenSSL (NameError)
所以,我打开了 https 文件并更改了一件事,看看会发生什么,我这样做了:
@ssl_context = ::OpenSSL::SSL::SSLContext.new
如果你看不到,我在方法里把::
加到OpenSSL::SSL::SSLContext.new
:
def use_ssl=(flag)
然后问题就消失了。
现在显然我不能直接编辑 ruby 库的源代码所以我将以下内容添加到我的脚本顶部作为补丁:
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=': uninitialized constant OpenSSL (NameError)
尽管已经完成:
require 'openssl'
在我的脚本的顶部。
为什么 OpenSSL
不存在,即使我需要它?
我猜我遗漏了一些东西,但老实说我看不到它。
编辑:
嗯,我注意到 Openssl(我正在维护这个项目)在 gemfile 中,我很确定它不应该在那里,我卸载了它但它仍然无法工作。
好的,所以,在浏览互联网并尝试各种方法后,我找到了解决问题的方法,我不得不使用以下命令重新安装 ruby 1.8.7-p375:
RUBY_CONFIGURE_OPTS=--with-openssl-dir= rbenv install 1.8.7-p375
至少可以在 osx 上找到 opensslDir,并像这样用自制软件安装:
brew list openssl
你会得到一堆目录,只需复制所有目录中的位,它可能看起来像这样:
/usr/local/Cellar/openssl/1.0.2h