Rails: явно указывает rails порт, на котором он работает - PullRequest
1 голос
/ 17 ноября 2010

У меня следующая проблема.Я хочу явно указать rails порт, на котором он запущен, так что помощник _url будет использовать этот порт вместо автоматически обнаруживаемого порта.

Основная проблема заключается в том, что у меня тонкое обслуживание моего приложения rails и обслуживание apacheстатический контент.Это работает нормально, если доступ к веб-сайту осуществляется через порт 80 (apache), но не при доступе к порту, на котором запущен тонкий порт.(Какой порт будет автоматически обнаружен.)

Ответы [ 2 ]

0 голосов
/ 17 ноября 2010

Rails должен создавать относительные ссылки, которые не включают полное доменное имя, см. Пример здесь , я цитирую:

link_to "Profile", profile_path(@profile)

# => <a href="/profiles/1">Profile</a>;

ярлыки * _url, нас другой стороны, вы используете полный путь, что плохо, когда вы находитесь за обратным прокси-сервером (в вашем случае это apache).

Вы пытались использовать только * _path для ссылок и * _url для перенаправлений,как, в случае перенаправления, apache должен переписать URL, чтобы он соответствовал его порту (при условии, что вы используете директивы ProxyPass и ProxyPassReverse на уровне Apache)?

Если вы используете url_for, вы можете заставить егобудьте относительными, установив для: only_path значение true.

Если ваша конфигурация apache не основана на ProxyPass, не могли бы вы скопировать / вставить интересную часть, чтобы я мог исправить этот ответ?

Спасибо ввперед.

0 голосов
/ 17 ноября 2010

Поскольку Ruby on Rails использует собственный сервер, пользователи, посещающие ваш веб-сайт (а затем и ваше приложение Ruby on Rails), должны будут перенаправлены на соответствующий порт.

Чтобы изменить порт сервера Ruby on Railsвы должны запустить сервер с параметром -p:

ruby s -p <port-number>
...