我的目标:将所有 Ruby 源代码和 gem 放在与 war/ear 一起打包的 jar 文件中。这是必需的,因为我工作的组织不接受将它们放在 J2EE 容器之外的文件系统上。
在 Weblogic 10.3 上使用 JRuby 1.6.7 我收到以下错误。“LoadError:没有要加载的文件——active_record”。我的设置是我已经下载了 jruby-complete 并将它放在我的网络应用程序中。我还使用这些方向将 ActiveRecord 及其支持的 gem 添加到 jruby-gems.jar 中。当我构建我的 web 应用程序时,我将两个 jar 添加到了 war 文件库和 ear 文件中的 META-INF/lib。我还尝试将它们添加到 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 中但没有成功。