为什么我不能在Jetty上运行的JRuby on Rails应用程序中设置ActionController Relative URL Root?

时间:2011-03-23 06:59:16

标签: ruby-on-rails jetty jruby

我正在开发一个Ruby on Rails应用程序,但我正在Jetty中使用JRuby在/app的上下文路径下运行它。

我正在使用Rails 3.0.5,JRuby 1.6.0和Jetty 6.1.22

当我部署到Jetty时,静态资源的相对URL是/stylesheets/*/javascripts/*,而不是/app/stylesheets/*/app/javascripts/*,因此打破了样式和客户端功能。

我尝试将config.action_controller.relative_url_root = '/app'添加到config/environments/production.rb,但Jetty无法初始化该应用程序。

Jetty的堆栈跟踪如下所示:

  

2011-03-23   16:19:54.062:WARN:/应用:错误:   应用初始化失败   org.jruby.rack.RackInitializationException:   无法创建共享应用程序   例           在org.jruby.rack.SharedRackApplicationFactory.init(SharedRackApplicationFactory.java:39)           at org.jruby.rack.RackServletContextListener.contextInitialized(RackServletContextListener.java:44)           at org.mortbay.jetty.handler.ContextHandler.startContext(ContextHandler.java:548)           at org.mortbay.jetty.servlet.Context.startContext(Context.java:136)           at org.mortbay.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1250)           在org.mortbay.jetty.handler.ContextHandler.doStart(ContextHandler.java:517)           在org.mortbay.jetty.webapp.WebAppContext.doStart(WebAppContext.java:467)           在org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50)           在org.mortbay.jetty.handler.HandlerCollection.doStart(HandlerCollection.java:152)           at org.mortbay.jetty.handler.ContextHandlerCollection.doStart(ContextHandlerCollection.java:156)           在org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50)           在org.mortbay.jetty.handler.HandlerCollection.doStart(HandlerCollection.java:152)           在org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50)           在org.mortbay.jetty.handler.HandlerWrapper.doStart(HandlerWrapper.java:130)           在org.mortbay.jetty.Server.doStart(Server.java:224)           在org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50)           在org.mortbay.xml.XmlConfiguration.main(XmlConfiguration.java:985)           at sun.reflect.NativeMethodAccessorImpl.invoke0(Native   方法)           at sun.reflect.NativeMethodAccessorImpl.invoke(未知   资源)           at sun.reflect.DelegatingMethodAccessorImpl.invoke(未知   资源)           在java.lang.reflect.Method.invoke(未知   资源)           在org.mortbay.start.Main.invokeMain(Main.java:194)           在org.mortbay.start.Main.start(Main.java:534)           在org.mortbay.start.Main.start(Main.java:441)           在org.mortbay.start.Main.main(Main.java:119)

如何在初始化应用程序时配置此设置并且不会让Jetty爆炸?

1 个答案:

答案 0 :(得分:0)

在Rails 3中删除了

config.action_controller.relative_url_root。我在我的网站上有一篇关于此的帖子:Deploying a Rails 3.1 app to subdirectory in Apache。虽然它是为Apache编写的,但您应该能够将其重写为Jetty。