【问题标题】:possible to load nokogiri in jruby without installing nokogiri-java?可以在不安装 nokogiri-java 的情况下在 jruby 中加载 nokogiri 吗?
【发布时间】:2016-06-18 22:45:25
【问题描述】:

我需要一种方法来运行以下 nokogiri 脚本

#parser.rb
require 'nokogiri'

def parseit()
//...
end

并在 jruby 中的 main.rb 下面运行时调用 parseit()

#main.rb
require 'parser'

parseit()

当然问题是 jruby 找不到 'nokogiri',因为我还没有通过 jruby -S gem install nokogiri 安装它又名 nokogiri-java

原因是我在 Jruby 下运行的 nokogiri 中发现了一些错误,所以我只在 Ruby 上安装了 nokogiri 而不是 Jruby。 parser.rb 在 Ruby 下完美运行。

所以我的目标是能够运行 parseit() 而无需在 Jruby 上安装 nokogiri!

【问题讨论】:

    标签: ruby jruby nokogiri


    【解决方案1】:

    Nokogiri 在 JRuby 下工作得很好(1.4.0 有问题,但 gem 的 1.4.1 版本对我来说是完美的)。

    jruby -S gem install nokogiri
    

    如果您在平台检测方面遇到问题,可以强制执行:

    jruby -S gem install nokogiri --platform=java
    

    将它与 JRuby 一起使用应该不会有任何问题,如果是,那么也许你的堆栈不正确。

    【讨论】:

      【解决方案2】:

      Nokogiri 应该在 JRuby 中的 FFI 下工作。见http://www.ruby-forum.com/topic/186274

      【讨论】:

        【解决方案3】:

        Nokogiri 应该只通过 FFI 与 JRuby 一起工作,所以在我看来,最好的做法就是弄清楚为什么在 JRuby 中安装 nokogiri 对你不起作用。

        你看到什么样的问题?什么 JRuby 版本?什么平台?

        【讨论】:

          【解决方案4】:

          这是一个例子,Nokogiri 的 Java 实现似乎产生了与 C 版本不同的结果,这导致丝瓜络 gem 未能通过一系列 JRuby 测试。这阻碍了 Redmine 开发人员支持 JRuby 的能力。

          https://github.com/flavorjones/loofah/issues/88#issuecomment-122747924

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2012-11-25
            • 2021-11-11
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多