JRuby войны зависимости / проблема окружающей среды
У меня есть приложение на основе Sinatra, написанное на Ruby, которое упаковано с помощью 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.
1 ответ
Попробуйте не упаковывать драгоценные камни в.jar сейчас, это лучше отражало бы ожидания FS - время от времени возникают проблемы с __FILE__
, File.expand_path
и т.д. использование в.jar
ps Также могут быть исправления для этого в последней версии JRuby 1.7.10, но если нет, просто отключите функцию gemjar в Warbler, чтобы.war действительно содержал гемы как они есть (не упакованные в другой jar).