我正在部署一个打包到“abc.war”中的JRuby/Rails应用程序,它与打包到“def.war”中的Java应用程序一起部署在同一Tomcat实例中。
我的Rails应用程序中有一个名为“Blogs”的资源,routes.rb中有以下条目
resources :blogs
有了routes.rb中的这个条目,我就有了blogs_path()之类的助手,所以我可以使用以下语句:
<%= link_to "Blogs", blogs_path %>
在我的应用程序视图文件中,点击生成的链接会显示博客列表。
当这个应用程序与Webrick web服务器(JRuby 1.6.4,用Ruby 1.9和Rails 3.0.10配置)独立运行时,它运行得很好,因为http://localhost:3000/blogs当我点击该链接时,会给我一个博客列表)。当我将应用程序部署到另一个基本服务器URL时,例如,“http://funky-freddy-101.heroku.com”,那么我就不必用“blogs_path”来更改代码,因为Rails会自动计算出基本URL,而blogs_paath()代码在构建“blogs_path”生成的实际URL时会考虑到这一点。
在文件“abc.war”中将应用程序部署到JRuby/Tomcat时,基本URL从http://localhost:3000“至”http://localhost:8081/abc“.所以键入”http://localhost:8081/abc/blogs“在浏览器中会给我一个博客列表,并且”http://localhost:8081/blogs“给了我一个404错误。然而,问题是,尽管应用程序的基本URL包括WAR文件名的后缀(即“abc”),Rails并没有意识到这一点,因此仍然会生成”http://localhost:8081/blogs”作为调用blogs_path()时的URL。当我点击链接时,它会给我标准的Tomcat404页面。
有没有什么简单的方法可以让Rails获得以引用“abc”(WAR文件的名称)作为后缀的基本URL,并在JRuby/Tomcat部署中适当地生成URL?由于这个应用程序与def.war一起运行,我无法将其作为根应用程序。