2009-04-07 13 views
1

Ich versuche, Gurke für Jruby auf Rails zu betrachten. Eine der Vorraussetzungen ist Webrat, die als Voraussetzung hpricot hat.Installieren von Hprikot für JRuby

ich den Edelstein mit hpricot installiert haben mit:

gem hpricot installieren --source http://code.whytheluckystiff.net -Version 0.6.1 --platform java

Diese die Java-Version von hpricot installiert. Ich füge die hpricot_scan.jar zum CLASSPATH aber wenn ich laufe:

cucumber features -n 

ich die folgende Ausgabe:

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' 

usw.

Wenn ich die HpricotScanService.java Datei kompilieren und fügen die resultierende .class-Datei auf dem classpath, erhalte ich:

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"' 

Wenn ich versuche später versi zu installieren ons des hpricot, dann bekomme ich:

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 

Hat jemand irgendwelche Hinweise geben, was ich falsch/nicht tun tue/wo ich bin dumm.?

Verwendung von Windows XP, JRuby 1.2.0

Antwort

0

Hpricot verwendet native C-Erweiterungen und es nicht FFI-konform. Daher kann es unter JRuby nicht verwendet werden.

+0

Aber es ist eine Java-Version verfügbar ist, werden Sie sagen, dass die nativen Code verwendet? –

+0

Tut mir leid, MatthieuF, mir war nicht klar, dass du die ältere Version benutzt hast. Das sollte okay sein. – Rob

5

Ich weiß nicht, über Gurke aber Hpricot kann auf jeden Fall von JRuby 1.2.0 (wenn auch nicht die neueste Version von Hpricot) verwendet werden. Welche Version von Hpricot hast du installiert? Vielleicht ist es mit den anderen Bibliotheken nicht kompatibel?

Der folgende Befehl für mich gearbeitet:

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

Da Ola Bini Umschreiben von hpricot jruby Unterstützung im vergangenen Monat, die git head von hpricot mit jruby installiert werden. Einfach den Kopf herunterladen, dann

verwenden und Sie sollten golden sein.

+1

Es ist erwähnenswert, dass hpricot erfordert, dass Ragel baut. Wenn Sie JRuby ausführen, weil Sie nicht cool genug sind, um einen C-Compiler in Ihrer Zielumgebung zu haben, müssen Sie den Edelstein auf einem anderen System zusammenstellen. Und anscheinend sind HTML-Links in Kommentaren nicht erlaubt: http://complang.org/ragel/ –