Изменение базового URL для разработки на Rails 3 - PullRequest
13 голосов
/ 06 апреля 2011

Я знаю, что собираюсь развернуть в среде с моим приложением, работающим с базовым URL, который выглядит следующим образом:

http://someserver/mydepartment/myapp

Моя среда разработки настроена на использование конфигурации Rails по умолчанию, которая выглядит следующим образом:

http://localhost:3000/myapp

Я хотел бы смоделировать этот путь развертывания в моей среде разработки. То есть я хотел бы разработать базовый URL, который выглядит следующим образом:

http://localhost:3000/mydepartment/myapp

Таким образом, я могу сделать все свои URL-адреса относительно "/", и они будут работать в обеих средах.

Как я могу изменить его, чтобы мое приложение работало по этому пути в моей среде разработки?

Решения, которые я нашел, но у меня не работает:

  • Установка scope в routes.rb не работает для статического содержимого в public.
  • Использование возможностей переписывания Apache. Я не хочу устанавливать Apache на мою коробку разработки. В идеале решение будет работать с WEbrick, хотя у меня, похоже, в основном работает Mongrel (есть некоторые проблемы с Mongrel и Ruby 1.9.2).
  • Настройка relative_url_root и аналогичные предложения, которые не работают с Rails 3.
  • Динамическое создание CSS / JavaScript и корректировка путей для компенсации между средами разработки и производства.

Ответы [ 3 ]

15 голосов
/ 14 апреля 2011

Вы можете попробовать сопоставить конфигурацию стойки приложения rails с другим base_uri. Все, что вам нужно сделать, это обернуть существующую команду «Выполнить» в блок карты

попробуйте сделать это в файле config.ru 'вашего рельса:

map '/mydepartment' do
    run Myapp::Application
end

Теперь, когда вы 'rails server', приложение должно быть на localhost: 3000 / mydepartment . Не уверен, что это даст вам желаемый результат, но стоит попробовать.

5 голосов
/ 10 сентября 2011

Вот как вы можете развернуть приложение Rails 3.1 в подкаталоге в Apache, заменив config.action_controller.relative_url_root, который больше не существует.

В config/routes.rb:

scope 'my_subdir' do
  # all resources and routes go here
end

В вашем Apacheфайл конфигурации:

Alias /my_subdir /var/www/my_subdir/public
<Location /my_subdir>
  SetEnv RAILS_RELATIVE_URL_ROOT "/my_subdir"
  PassengerAppRoot /var/www/my_subdir
</Location>

И он должен работать, включая автоматическое указание всех ваших активов на /my_subdir.

0 голосов
/ 09 апреля 2011

Добавьте следующую строку в конец config / environment.rb

ActionController::Base.relative_url_root = "/mydepartment"
...