/ / require jruby wydaje się działać i jednocześnie zawieść - ruby, jruby

wymagają jruby wydaje się działać i jednocześnie zawieść - ruby, jruby

John-Breedloves-Mac-mini:~ john_breedlove$ irb
>> require "jruby"
=> true
>> require "zxing"
RuntimeError: ZXing requires JRuby
from /Library/Ruby/Gems/1.8/gems/zxing-0.1.1/lib/zxing.rb:1
from /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/rubygems/custom_require.rb:36:in `gem_original_require"
from /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/rubygems/custom_require.rb:36:in `require"
from (irb):2
>>

Jak to jest możliwe?

Co więcej, jak mógłbym to napisać w skrypcie ruby? Mam plik, który chcę wykonać, wywoływany test.rb, który zawiera:

require "rubygems"
require "jruby"
require "zxing"
ZXing.decode "test.png"

Uruchamiam go z wiersza poleceń tak jak poniżej:

ruby test.rb

W tym kontekście, w jaki sposób dołączyć java? Czy to możliwe?

Odpowiedzi:

1 dla odpowiedzi № 1

Używasz klejnotu JRuby, a nie samego JRuby.

JRuby (które ZXing sprawdza na linii 1) jest modułem, który definiuje się dopiero po tobie require "java" w JRuby.

To powinno być jasno określone w dokumentacji ZXinga, ale tak się nie wydaje.

Tutaj jest wynik testu, gdy uruchomię następujące z klonowanego kodu źródłowego ZXing:

$ ruby -v -I lib -r zxing -e "p 0"
ruby 1.8.7 (2009-06-12 patchlevel 174) [universal-darwin10.0]
./lib/zxing.rb:1: ZXing requires JRuby (RuntimeError)
$ jruby -I lib -r zxing -e "p 0"
/Users/asari/Development/src/zxing.rb/lib/zxing.rb:1: ZXing requires JRuby (RuntimeError)
from /Users/asari/Development/src/zxing.rb/lib/zxing.rb:1
...internal jruby stack elided...
from (unknown).(unknown)(/Users/asari/Development/src/zxing.rb/lib/zxing.rb:1)
from (unknown).(unknown)(:1)
$ jruby -r java -I lib -r zxing -e "p 0"
0