Установка hpricot для JRuby - PullRequest
1 голос
/ 07 апреля 2009

Я пытаюсь взглянуть на огурец для Jruby on Rails. Одним из предварительных требований является вебрат, который имеет в качестве обязательного hpricot.

Я установил гем с помощью hpricot, используя:

gem install hpricot --source http://code.whytheluckystiff.net --version 0.6.1 --platform java

Устанавливает Java-версию hpricot. Я добавляю 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-файл в classpath, я получу:

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

Ответы [ 4 ]

5 голосов
/ 09 апреля 2009

Я не знаю, что такое огурец, но Hpricot определенно можно использовать с JRuby 1.2.0 (хотя и не последнюю версию Hpricot). Какая версия Hpricot у вас установлена? Может быть, это несовместимо с другими библиотеками?

У меня сработала следующая команда:

jruby -S gem install hpricot --version '~>0.6.1'  
5 голосов
/ 24 августа 2009

Поскольку Ola Bini переписал поддержку hpricot jruby в прошлом месяце, git head hpricot может быть установлен с jruby. Просто скачайте голову, затем используйте

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

и ты должен быть золотым.

1 голос
/ 19 ноября 2009

FYI, версия 1.4 JRuby теперь поддерживает версию 0.7 HPricot.

http://jruby.org/2009/11/02/jruby-1-4-0.html

0 голосов
/ 08 апреля 2009

HPricot использует собственные расширения C и не соответствует FFI. Поэтому его нельзя использовать под JRuby.

...