我有用Ruby编写的基于Sinatra的应用程序,它使用warbler打包。生成的文件在我的本地笔记本电脑(Tomcat 7.0.50)和沙盒主机(Tomcat 6.0.35)上运行正常。但是,在prod box上这场战争(完全相同的文件 - 重新部署并用md5sum重新确认)显示以下错误:
org.jruby.rack.RackInitializationException: No such file or directory - file:/opt/apache-tomcat-6.0.35/webapps/blah/WEB-INF/lib/gems.jar!/gems/mail-2.5.4/lib/mail/../VERSION
from org/jruby/RubyIO.java:3741:in `read'
from org/jruby/RubyIO.java:3920:in `read'
Prod box具有与JVM和Apache完全相同的版本(通过Linux中当前启动的进程重新确认)。
当我解压缩gems.jar
文件时,我可以看到所请求的VERSION
文件已到位,因此这不是打包问题。
这场战争还取决于什么?
让我感到困惑的是,它正在处理不同的配置(我的笔记本电脑),但没有使用相同的配置(沙箱和产品)。
我正在使用JRuby 1.7.5。
答案 0 :(得分:0)
现在尝试不将宝石打包到.jar中,它会更好地反映FS的期望 - {。1}},__FILE__
等用法在.jar
P.S。在最新的JRuby 1.7.10中也可能有一些修复,但如果不是简单地禁用Warbler中的 gemjar 功能,那么.war确实包含了宝石(不包装在另一个jar中)