将Jruby war部署到Tomcat6之后的RackInitializationException

时间:2013-01-16 16:46:47

标签: ruby-on-rails tomcat jruby war

我正在使用:

jruby 1.7.2 (ruby-1.8.7p370)
Rails 2.0.2
jruby-jars-1.7.2
jruby-rack-1.1.13.1 
rake (10.0.3, 0.8.1) Rake 10.0.3 was installed by Warbler

访问应用程序时出现以下错误:

org.jruby.rack.RackInitializationException: uninitialized constant Rack::Builder

from /usr/share/tomcat6/webapps/app/WEB-INF/gems/gems/activesupport-2.0.2/lib/active_support/dependencies.rb:266:in `load_missing_constant'
from /usr/share/tomcat6/webapps/app/WEB-INF/gems/gems/activesupport-2.0.2/lib/active_support/dependencies.rb:453:in `const_missing'
from null:1:in `(root)'

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

这是一个非常老版本的rails! :-)如果可能的话你应该把它带到2.3分支。我非常怀疑你在jruby 1.7.1中运行它时会遇到问题,因为它运行的是ruby 1.9代码。您可能希望首先将其回拨到最后的1.6版本,因为默认情况下它将在ruby 1.8.7中运行。

此外,您可能过于雄心勃勃地使用较新的tomcat。您应该查看特立尼达宝石,因为它可以在遗留应用程序上更好地支持您。

然而问题的关键是你使用的是需要机架的ruby版本。我怀疑你有一个旧的rails应用程序。 IIRC它直到2.2-ish才出现。