用于OpenSSL :: SSL :: SSLContext的未定义方法`set_params'

时间:2013-10-21 17:05:42

标签: ruby-on-rails ruby rubygems ruby-on-rails-4

我创建了一个名为kmdata的宝石,它有一个可执行文件。从我的gem文件夹中运行bundle exec kmdata decot.7时一切正常。在将gem发布到rubygems后,我运行gem install kmdata(在新窗口中)。然后我尝试运行kmdata decot.7,我得到以下

/Users/kyledecot/.rvm/rubies/ruby-2.0.0-p247/lib/ruby/2.0.0/net/http.rb:891:in `connect': undefined method `set_params' for #<OpenSSL::SSL::SSLContext:0x007fff31d59d18> (NoMethodError)
    from /Users/kyledecot/.rvm/rubies/ruby-2.0.0-p247/lib/ruby/2.0.0/net/http.rb:862:in `do_start'
    from /Users/kyledecot/.rvm/rubies/ruby-2.0.0-p247/lib/ruby/2.0.0/net/http.rb:851:in `start'
    from /Users/kyledecot/.rvm/rubies/ruby-2.0.0-p247/lib/ruby/2.0.0/net/http.rb:1367:in `request'
    from /Users/kyledecot/.rvm/gems/ruby-2.0.0-p247/gems/kmdata-0.0.3/lib/kmdata.rb:24:in `get'
    from /Users/kyledecot/.rvm/gems/ruby-2.0.0-p247/gems/kmdata-0.0.3/bin/kmdata:5:in `<top (required)>'
    from /Users/kyledecot/.rvm/gems/ruby-2.0.0-p247/bin/kmdata:23:in `load'
    from /Users/kyledecot/.rvm/gems/ruby-2.0.0-p247/bin/kmdata:23:in `<main>'

lib / kmdata.rb中的行是

response = http.request(Net::HTTP::Get.new(path))

更新#1

使用2.0时,这似乎只是一个问题。如果我在1.9.3中运行相同的命令,那么一切都按预期工作。

3 个答案:

答案 0 :(得分:3)

您可能需要包含此行(例如,在文件的开头):

require 'openssl'

我在2.0上有这个错误,并添加此行修复它。也许你的1.9.3有一些隐式要求的配置/ gem?

答案 1 :(得分:0)

突然之间,但您是否已将Net :: HTTP配置为使用SSL连接? Using Net::HTTP.get for an https url

这是另一个有同样问题的人......没有提到它是一个解决方案,但试试看:https://www.ruby-forum.com/topic/4417738

这看起来像Net :: HTTP中的错误......您使用的是最新版本的gem吗?

答案 2 :(得分:0)

如果我是你,我会专注于:

undefined method `set_params' for #<OpenSSL::SSL::SSLContext:0x007fff31d59d18> (NoMethodError)

我认为你可以把你的宝石组织成一种不存在的东西,或者你有两个具有相同名称的类或方法,而现在正在选择错误的宝石。 我曾经有过几次这样的事情。

简单地说,它可能最终成为范围事物 - 需要/包含或重复方法。

如果我是对的,我们无法提供帮助 - 无法访问您的计算机。

我希望你能找到它。我建议在文件中进行一些grepping /搜索方法名称,类名等等。如果你还没有。

修改: 回头看,似乎你只是处理股票代码。 如果是这种情况,请尝试卸载所有版本的ruby,然后重新安装2.0.0。你会感到惊讶 - 我已经安装了1.9.3做这样的事情。