Я развертываю приложение JRuby / Rails, упакованное в «abc.war», и оно развертывается с приложением Java, упакованным в «def.war» в том же экземпляре Tomcat.
В моем приложении на Rails есть ресурс под названием «Блоги» со следующей записью в routs.rb
resources :blogs
С этой записью в routs.rb у меня есть помощники, такие как blogs_path(), чтобы я мог использовать такие утверждения, как:
<%= link_to "Blogs", blogs_path %>
в моем файле представления приложения, и при нажатии на сгенерированную ссылку отображается список блогов.
Когда это приложение работает автономно с веб-сервером Webrick (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_path () учитывают это при создании фактического URL, созданного с помощью "blogs_path".
При развертывании приложения в JRuby / Tomcat в файле "abc.war" базовый 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" в качестве URL-адреса при вызове blogs_path ().Когда я нажимаю на ссылку, она дает мне стандартную страницу Tomcat 404.
Есть ли какой-нибудь простой способ заставить Rails получить базовый URL с суффиксом «abc», именем файла WAR и соответствующим образом генерировать URL в развертывании JRuby / Tomcat?И поскольку это приложение работает вместе с def.war, я не могу сделать его корневым приложением.