#tomcat #sinatra #jruby
#tomcat #sinatra #jruby
Вопрос:
При разработке приложения Sinatra для работы на thin, пути довольно просты.
Теперь, когда я запускаю через искаженный файл war в tomcat, все изменилось. Корень теперь имеет глубину еще на один уровень ( /warFileName/
), а относительные адреса относятся к маршруту / URL, поэтому, если у меня есть два маршрута, получающих ‘dostuff’ и получающих ‘subdir / dostuff’, поиск любых файлов (js, css, изображений) отличается между ними (первый я могу просто сделать 'js/blah.js'
, и он будет правильно выглядеть public/js
, второй он будет выглядеть subdir/js
и завершится неудачей).). И я больше не могу использовать косую черту root ( /js
), потому что tomcat продвигает вещи на уровень глубже, как я уже говорил ранее ( /warFileName/subdir/doStuff
).
Предполагая, что я не хочу жестко закодировать /warFileName/
все мои ссылки на изображения / js / css / etc, и я бы предпочел, чтобы мои маршрутизаторы не передавали данные в haml, например, @root = ".."
или @root = ""
в зависимости от того, находимся ли мы в псевдоподкаталоге или нет, есть ли элегантный способ справиться с этим?
Комментарии:
1. я также ищу ответ на этот вопрос, я опубликую здесь, если я это выясню.
Ответ №1:
Использование помощника Sinatra URL — лучший способ справиться с этим.
<%= url '/path' %>
или, если вы хотите выполнить оценку некоторого Ruby внутри URL-пути:
<%= url "/path/#{foo}" %>