私の目標: すべての Ruby ソースコードと gem を、war/ear にパッケージ化された jar ファイルに入れること。これが必要なのは、私が働いている組織が、J2EE コンテナーの外部のファイル システムにそれらを配置することを受け入れないためです。
Weblogic 10.3 で JRuby 1.6.7 を使用すると、次のエラーが発生します。「LoadError: ロードするファイルがありません -- active_record」. 私のセットアップでは、jruby-complete をダウンロードして、Web アプリケーションに配置しています。また、これらの指示を使用して、ActiveRecord とそのサポート gem を jruby-gems.jar に追加しました。Web アプリケーションをビルドするときに、war ファイル lib と ear ファイルの META-INF/lib に両方の jar を追加しました。また、ear ファイルの APP-INF/lib フォルダーに追加してみました。まだ LoadError を受信しています。
さらに、ここで説明したように、ロードパスに以下を追加しました。私はこれを、先頭のスラッシュの有無にかかわらず、「クラスパス:」の有無にかかわらず行いました。
List paths = new ArrayList();
paths.add("classpath:/ruby");
paths.add("classpath:/myapp");
paths.add("classpath:/META-INF/jruby.home/lib/ruby/gems/soart");
paths.add("classpath:/META-INF/jruby.home/lib/ruby/1.9");
paths.add("classpath:/META-INF/jruby.home/lib/ruby/site_ruby/1.9");
paths.add("classpath:/META-INF/jruby.home/lib/ruby/site_ruby/shared");
paths.add("classpath:/META-INF/jruby.home/lib/ruby/gems/1.9");
container.setLoadPaths(paths);
すべての単体テストに合格し、jar ファイルが ear および war ファイルに作成されていることを確認しました。単体テストでは、ActiveRecord を使用してデータベースからデータをプルします。
展開サーバーを制御しないため、GEM_PATH および GEM_HOME 環境変数を空の文字列に設定します。すべてのリソースは、戦争/耳の中から来る必要があります。
また、これは Ruby on Rails アプリケーションではなく、現時点で作成することもできません。
アップデート
gem ファイルを jruby-complete.jar に配置しようとしましたが、成功しませんでした。