2

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

#parser.rb
require 'nokogiri'

def parseit()
//...
end

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

#main.rb
require 'parser'

parseit()

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

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

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

4

4 回答 4

7

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

jruby -S gem install nokogiri

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

jruby -S gem install nokogiri --platform=java

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

于 2009-12-14T18:01:25.330 回答
1

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

于 2009-11-28T09:45:38.650 回答
0

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

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

于 2009-11-28T11:28:04.217 回答
0

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

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

于 2016-06-18T14:45:25.937 回答