我需要一种方法来运行以下nokogiri脚本
#parser.rb
require 'nokogiri'
def parseit()
//...
end
并在jruby
中的main.rb下运行时调用parseit()
#main.rb
require 'parser'
parseit()
当然问题是jruby找不到'nokogiri'
因为我还没有安装它{em> nokogiri-java 通过jruby -S gem install nokogiri
原因是我在Jruby下运行的nokogiri中发现了一些错误,所以我只在Ruby上安装了nokogiri而不是Jruby。 parser.rb
完全在Ruby下运行。
所以我的目标是能够运行parseit()而无需在Jruby上安装nokogiri!
答案 0 :(得分:7)
Nokogiri在JRuby下运行得很好(1.4.0有问题,但宝石的1.4.1版本对我来说非常合适)。
jruby -S gem install nokogiri
如果您遇到平台检测问题,可以强制执行:
jruby -S gem install nokogiri --platform=java
使用JRuby时不应该有任何问题,如果你那么可能你的堆栈不对。
答案 1 :(得分:1)
Nokogiri应该在JRuby的FFI下工作。见http://www.ruby-forum.com/topic/186274
答案 2 :(得分:0)
Nokogiri应该通过FFI与JRuby合作,所以在我看来,最好的行动方案就是弄清楚为什么在JRuby中安装nokogiri不适合你。
你看到了什么样的问题?什么JRuby版本?什么平台?
答案 3 :(得分:0)
这是一个例子,看起来Nokogiri的Java实现会产生与C版本不同的结果,这导致丝瓜宝宝失败了一堆JRuby测试。这阻碍了Redmine开发人员支持JRuby的能力。
https://github.com/flavorjones/loofah/issues/88#issuecomment-122747924