Изменение базового URL-адреса для разработки Rails 3

Я знаю, что собираюсь развернуть среду с моим приложением с базовым 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 и настройка путей для компенсации между средами разработки и производства.

Ответы

Ответ 1

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

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

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

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

Ответ 2

Вот как вы можете развернуть приложение 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.

Ответ 3

Добавьте строку ниже в конец config/environment.rb

ActionController::Base.relative_url_root = "/mydepartment"