1

我正在使用 Rails 3.1.3、JRuby 1.7.6 和 Warbler 1.3.8

注意这在使用 JRuby 1.6.7 时没有发生 - 但我们最近尝试更新 JRuby 版本,这就是这个问题开始的时候。

我们使用 Warbler 将我们的 ruby​​ on rails 应用程序打包到一个 WAR 文件中。该过程预编译所有资产,一切正常(似乎工作正常,命令成功)

然后我们使用我们的软件部署 WAR 文件(它使用 JRuby 环境 - 1.7.6 - 并使用 Jetty 作为 Web 服务器)

当服务器尝试解压和部署 WAR 文件时,我们收到以下错误:

org.jruby.rack.RackInitializationException: No such file or directory - /home/production/var/tmp/Jetty_0_0_0_0_2525_ui.4.1.4.war____.ed5d4m/webapp/WEB-INF/jar:file:/home/production/var/tmp/Jetty_0_0_0_0_2525_ui.4.1.4.war____.ed5d4m/webapp/WEB-INF/lib/gems.jar!/gems/activesupport-3.1.3/lib/active_support/locale/en.yml
from org/jruby/RubyFile.java:838:in `stat'

我检查了解压后的 WAR 目录,转到 gems.jar 文件,解压它,并检查了所有文件 - activesupport 3.1.3 en.yml文件在那里。文件的权限与我期望的一样(即,与以前的 JRuby 1.6.7 似乎没有什么不同)

编辑 JRuby 1.7.6 和 Warbler 1.3.8 之间存在一个错误 - https://github.com/jruby/warbler/issues/197 遇到之后,我尝试使用 Warber 1.4.0.beta2 - 它修复了莺 - jruby 错误,但该修复只能让我再次接收丢失的 locale/en.yml 文件。

有什么建议么?谢谢!

4

2 回答 2

3

我试图重现您的问题,但无法重现。我安装了 Rails 3.1.3、Warbler 1.4.0.beta2 和 JRuby 1.7.6。创建一个新的 Rails 应用程序后,我创建了一个控制器/视图,预编译了我的资产,然后通过运行创建了一个战争warble。然后我将我的 WAR 转储到 Jetty 9.0.6 (v20130930) 中。

我能够导航到该应用程序,并且大量文件位于 WAR 中WEB-INF/gems/gems/activesupport-3.1.3(总共 253 个)。

您是否有一个自定义的莺文件可能会改变您构建 WAR 的方式?也许您可以删除它并尝试“库存”莺配置。

于 2013-11-14T02:11:27.343 回答
1

我会尝试 warbler 1.4.0.beta2 看看它是否已修复

于 2013-11-12T22:18:37.663 回答