Пути для синатры через Джруби, кота - PullRequest
1 голос
/ 20 мая 2011

При разработке приложения Sinatra для запуска в тонком направлении пути довольно просты.

Теперь, когда я запускаю файл warbled war в tomcat, все изменилось. Корень теперь еще на один уровень глубины (/warFileName/), и относительные адреса относятся к маршруту / URL, поэтому, если у меня есть два маршрута, получите 'dostuff' и получите 'subdir / dostuff', получая любые файлы (js, css, изображения) отличается между этими двумя (первое, что я могу просто сделать 'js/blah.js', и оно будет правильно выглядеть в public/js, второе - в subdir/js и потерпит неудачу). И я больше не могу делать корневую косую черту (/js) из-за того, что tomcat толкает вещи на уровень, как я уже говорил (/warFileName/subdir/doStuff).

Предполагая, что я не хочу жестко кодировать /warFileName/ во всех ссылках на свои изображения / js / css / etc, и я бы предпочел, чтобы мои маршрутизаторы не передавали вещи на хамл, как @root = ".." или @root = "" в зависимости от если мы находимся в псевдо-подкаталоге или нет, есть ли элегантный способ справиться с этим?

1 Ответ

1 голос
/ 29 июля 2011

Использование Sinatra URL helper - лучший способ справиться с этим.

<%= url '/path' %>

или, если вы хотите использовать какой-либо Ruby в пути URL:

<%= url "/path/#{foo}" %>
...