私は 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) 以外の宝石では見られません。