6

私は Warbler でバグを見つけたかもしれないと思いますが、私が間違っていることがある場合に備えて、質問としてここに投稿したかったのです。簡単に言えば、'bson' gem を必要とする jruby アプリを、ワーブラーを使用して .jar ファイルにパッケージ化しようとすると失敗します。毎回発生するエラーは次のとおりです。

LoadError: no such file to load -- jar:file:/Users/jstokes/Local/Repositories/wartest/wartest.jar!/gems/bson-1.8.0-java/lib/../ext/java/jar/mongo-2.6.5 ...

OS X または Linux で問題を再現するための非常に簡単な一連の手順を次に示します。

「wartest」ディレクトリを作成し、そこに cd します

bundler を使用して、「wartest」と呼ばれる新しい jruby-1.6.7.2 gemset を作成します。次に、「rvm use jruby-1.6.7.2@wartest」を実行します

ウグイスとバンドラーをインストールします。

jruby --1.9 -S gem install warbler
jruby --1.9 -S gem install bundler

そして、それが機能することを確認するために:

which warble
#=> /Users/jstokes/.rvm/gems/jruby-1.6.7.2@wartest/bin/warble

次に、次の 2 行の Gemfile を作成します。

#Gemfile
source 'http://rubygems.org'
gem 'bson'

今すぐ「バンドルのインストール」

bin ディレクトリを作成し、bin/main.rb ファイルを作成します。次に、次を貼り付けます。

#bin/main.rb
require 'bson'
puts 'It worked!'

この時点で、jar ファイルを作成する準備が整いました。そうする

jruby --1.9 -S warble jar
#=> rm -f wartest.jar
#=> Creating wartest.jar

真実の瞬間のために:

java -jar wartest.jar
#=> It worked!

だから問題は何ですか?問題は、別の gemset に変更したり、システム Ruby を使用したりすると、爆発することです。観察:

rvm use system
#=> Now using system ruby.
java -jar wartest.jar
LoadError:ロードするファイルがありません -- jar:file:/Users/jstokes/Local/Repositories/wartest/wartest.jar!/gems/bson-1.8.0-java/lib/../ext/java/jar/モンゴ-2.6.5
  org/jruby/RubyKernel.java:1027 で必要
  jar:file:/var/folders/xr/nmvhn6x566v6xkw9l7pgpkj40000gn/T/jruby5567740032767770706extract/jruby-stdlib-1.7.1.jar!/META-INF/jruby.home/lib/ruby/shared/rubygems/custom_require.rb で必要: 36
   (ルート) jar:file:/Users/jstokes/Local/Repositories/wartest/wartest.jar!/gems/bson-1.8.0-java/lib/bson.rb:53
  org/jruby/RubyKernel.java:1027 で必要
   (ルート) jar:file:/var/folders/xr/nmvhn6x566v6xkw9l7pgpkj40000gn/T/jruby5567740032767770706extract/jruby-stdlib-1.7.1.jar!/META-INF/jruby.home/lib/ruby/shared/rubygems/custom_require. RB:1
  jar:file:/var/folders/xr/nmvhn6x566v6xkw9l7pgpkj40000gn/T/jruby5567740032767770706extract/jruby-stdlib-1.7.1.jar!/META-INF/jruby.home/lib/ruby/shared/rubygems/custom_require.rb で必要: 60
     org/jruby/RubyKernel.java:1046 でロード
   (ルート) ファイル:/Users/jstokes/Local/Repositories/wartest/wartest.jar!/wartest/bin/main.rb:1
  org/jruby/RubyKernel.java:1027 で必要
   (ルート) ファイル:/Users/jstokes/Local/Repositories/wartest/wartest.jar!/META-INF/main.rb:1
   (ルート) ファイル:/Users/jstokes/Local/Repositories/wartest/wartest.jar!/META-INF/main.rb:1

戻って xf wartest.jar を jar し、gems/bson-1.8.0-java ディレクトリに移動すると、mongo-2.6.5.jar ファイルが存在し、適切な場所にあります。しかし、何らかの理由で、それは見つかりません。これは、Ubuntu と OS X の両方で毎回発生します。誰かが私が間違っていることを知っている場合は、教えてください。それ以外の場合は、バグ レポートを提出します。

また、バグ レポートを提出した場合、これは誰のバグですか? ウグイスのバグだと思いますが、bson (および bson に依存する mongo) 以外の宝石では見られません。

4

0 に答える 0