【问题标题】:Why can't I set ActionController Relative URL Root in a JRuby on Rails app running on Jetty?为什么我不能在 Jetty 上运行的 JRuby on Rails 应用程序中设置 ActionController 相对 URL 根?
【发布时间】:2011-07-21 02:03:22
【问题描述】:

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

我正在使用 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:警告:/应用程序:错误: 应用程序初始化失败 org.jruby.rack.RackInitializationException: 无法创建共享应用程序 实例 在 org.jruby.rack.SharedRackApplicationFactory.init(SharedRackApplicationFactory.java:39) 在 org.jruby.rack.RackServletContextListener.contextInitialized(RackServletContextListener.java:44) 在 org.mortbay.jetty.handler.ContextHandler.startContext(ContextHandler.java:548) 在 org.mortbay.jetty.servlet.Context.startContext(Context.java:136) 在 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) 在 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) 在 sun.reflect.NativeMethodAccessorImpl.invoke0(Native 方法) 在 sun.reflect.NativeMethodAccessorImpl.invoke(未知 资源) 在 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 炸毁?

【问题讨论】:

  • 仅添加config.action_controller.relative_url_root 会阻止应用程序初始化?

标签: ruby-on-rails jetty jruby


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-04-07
    • 2013-05-27
    • 1970-01-01
    • 2014-05-24
    • 2011-07-09
    • 2014-08-19
    • 2011-03-18
    • 2021-09-19
    相关资源
    最近更新 更多