未定义的方法`use_ssl'用于#<net :: http 127.0.0.1:8080=“”open =“false”> </net :: http>

时间:2014-04-08 10:52:18

标签: ruby-on-rails ruby ssl fedora

我使用ruby-fedora gem从我的数据库中获取信息

Fedora::Repository.instance.fetch_content

我的代码很有效,因为在我更新到Ruby 2.1.1之前没有问题。当我执行代码来获取数据时,来自gem本身的代码(bundle / ruby​​ / 2.1.0 / gems / ruby​​-fedora-1.0.5 / lib / fedora / connection.rb)会产生以下错误:

undefined method `use_ssl' for #<Net::HTTP 127.0.0.1:8080 open=false>
    bundle/ruby/2.1.0/gems/ruby-fedora-1.0.5/lib/fedora/connection.rb:191:in `http'
    bundle/ruby/2.1.0/gems/ruby-fedora-1.0.5/lib/fedora/connection.rb:152:in `request'

之前有人遇到过这样的事吗?可能是由于宝石不兼容吗?

编辑:我编辑了宝石代码,问题出现的地方是:

# Creates new Net::HTTP instance for communication with
# remote service and resources.
def http
  http             = Net::HTTP.new(@site.host, @site.port)
  http.use_ssl     = @site.is_a?(URI::HTTPS)
  http.verify_mode = OpenSSL::SSL::VERIFY_NONE if http.use_ssl <--- THIS LINE
  http
end

当我用以下功能替换该功能时,一切正常(因为我不使用HTTPS)

# Creates new Net::HTTP instance for communication with
# remote service and resources.
def http
  http             = Net::HTTP.new(@site.host, @site.port)
  http.verify_mode = OpenSSL::SSL::VERIFY_NONE if @site.is_a?(URI::HTTPS)
  http
end

1 个答案:

答案 0 :(得分:2)

看起来问题是不再主动维护ruby-fedora,it seems最后一个版本是在2009年。现在我确定你的修复程序可以正常工作,但如果你需要额外的帮助转发你需要自己破解一切。他们甚至不再有github页了!!

ActiveFedora似乎是一个积极维护的项目,应该适合您的需求。 Here it is on ruby-gems,最后一个版本是7天前(IMO在5年前击败!!)。