2009-04-07 104 views
1

我正在試圖在rails上查看Jruby的黃瓜。其中一項預先要求是webrat,它具有先決條件hpricot。爲JRuby安裝hpricot

我一直在使用安裝了角度來說,Hpricot寶石:

創業板安裝角度來說,Hpricot --source http://code.whytheluckystiff.net - 版本0.6.1 --platform的Java

這將安裝角度來說,Hpricot的Java版本。我的hpricot_scan.jar添加到CLASSPATH,但是當我運行:

cucumber features -n 

我得到以下輸出:

HpricotScanService.java:931:in `hpricot_scan': java.lang.NoSuchMethodError: 
org.jruby.runtime.builtin.IRubyObject.getInstanceVariable(Ljava/lang/String;)Lorg/jruby/runtime/builtin/IRubyObject; 
from HpricotScanService.java:1324:in `__hpricot_scan' 
from null:-1:in `call' 
from InvocationCallback.java:67:in `execute' 
from FullFunctionCallbackMethod.java:69:in `call' 
from DynamicMethod.java:243:in `call' 
from CachingCallSite.java:283:in `cacheAndCall' 
from CachingCallSite.java:121:in `callBlock' 

如果我編譯HpricotScanService.java文件並添加生成的.class文件到類路徑中,我得到:

Then I should see "Run" 
private method `scan' called for Hpricot:Module (NoMethodError) 
features/step_definitions/webrat_steps.rb:94:in `/^I should see "([^\"]*)"$/' 
features/manage_activity.feature:9:in `Then I should see "Run"' 

如果我嘗試安裝更高版本的角度來說,Hpricot的組件,然後我得到:

ERROR: Failed to build gem native extension. 
C:/Program Files/Ruby/jruby-1.2.0/bin/../bin/jruby.bat extconf.rb install hpricot --platform java 
C:/Program Files/Ruby/jruby-1.2.0/bin/../lib/ruby/1.8/mkmf.rb:7: JRuby does not support native extensions. Check wiki.jruby.org for alternatives. (Not 
ImplementedError) 
from C:/Program Files/Ruby/jruby-1.2.0/bin/../lib/ruby/1.8/mkmf.rb:1:in `require' 
from extconf.rb:1 

沒有人有任何線索,我做錯了什麼/不做/在那裏我太傻了?

使用Windows XP,JRuby的1.2.0

回答

0

角度來說,Hpricot使用原生的C擴展,它不符合FFI。因此它不能在JRuby下使用。

+0

但有可用的Java版本,你說,使用本地代碼呢? – 2009-04-08 07:22:42

+0

對不起MatthieuF,我沒有意識到你使用的是舊版本。這應該沒問題。 – Rob 2009-04-09 00:14:17

5

我不知道黃瓜,但Hpricot肯定可以從JRuby 1.2.0(儘管不是最新版本的Hpricot)中使用。你安裝了哪個版本的Hpricot?也許它與其他庫不兼容?

下面的命令爲我工作:

jruby -S gem install hpricot --version '~>0.6.1' 
5

自從上個月的角度來說,Hpricot JRuby支持奧拉·比尼的重寫,角度來說,Hpricot的git head可以使用JRuby安裝。只需下載頭部,然後使用

jruby -S rake package_jruby 
cd pkg 
sudo jgem install ./hpricot-0.8.1-jruby.gem 

你應該是金色的。

+1

值得注意的是,hpricot需要Ragel來構建。如果您正在運行JRuby,因爲您不夠酷,無法在目標環境中使用C編譯器,那麼您必須在另一個系統上安裝gem。顯然,HTML鏈接在評論中是不允許的:http://complang.org/ragel/ – 2009-09-08 19:12:18