我创建了一个名为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
中运行相同的命令,那么一切都按预期工作。
答案 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做这样的事情。