我正在开发一个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爆炸?
答案 0 :(得分:0)
config.action_controller.relative_url_root
。我在我的网站上有一篇关于此的帖子:Deploying a Rails 3.1 app to subdirectory in Apache。虽然它是为Apache编写的,但您应该能够将其重写为Jetty。