Изменение базового 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"