Pergunta

Eu estou tentando olhar pepino para JRuby on Rails. Um dos pré-requesites é webrat que tem como pré-requisito hpricot.

Eu instalei o gem com hpricot usando:

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

Isso instala a versão Java do hpricot. Eu adiciono o hpricot_scan.jar ao CLASSPATH mas quando eu executo:

cucumber features -n

Eu recebo o seguinte resultado:

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'

etc.

Se eu compilar o arquivo HpricotScanService.java e adicionar o arquivo resultante .class ao classpath, eu recebo:

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

Se eu tentar instalar versões posteriores do hpricot, então eu recebo:

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

Alguém tem alguma pista sobre o que estou fazendo de errado / não fazer / onde eu estou sendo estúpido.?

Usando o Windows XP, JRuby 1.2.0

Foi útil?

Solução

FYI, a versão 1.4 do JRuby agora suporta a versão 0.7 do HPricot.

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

Outras dicas

Eu não sei sobre pepino mas Hpricot pode definitivamente ser usado a partir JRuby 1.2.0 (embora não a última versão do Hpricot). Qual versão do Hpricot que você tem instalado? Talvez seja incompatível com as outras bibliotecas?

O comando a seguir trabalhou para mim:

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

Desde reescrita de hpricot de Ola Bini JRuby apoiar no mês passado, o git cabeça de hpricot pode ser instalado com jruby. Basta baixar o cabeça, em seguida, usar

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

e você deve ser de ouro.

HPricot usa extensões C nativas e que compatível não FFI. Portanto, não pode ser usado sob JRuby.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top