Warbler不包括ActiveSupport语言环境文件

我使用的是Rails 3.1.3,JRuby 1.7.6和Warbler 1.3.8

注意使用JRuby 1.6.7时没有发生这种情况 – 但我们最近尝试更新JRuby版本,这就是此问题开始时的情况。

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

然后,我们使用我们的软件(使用JRuby环境 – 1.7.6)部署WAR文件,并使用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 – 修复了warbler- jruby bug,但该修复程序只能让我足够远,以便再次收到丢失的locale / en.yml文件。

有什么建议? 谢谢!

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

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

您是否有可能正在改变构建WAR的自定义warbler文件? 也许你可以删除它并尝试“库存”鸣鸟配置。

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