Запуск Rails + Пассажир + Создать из подкаталога?
У меня есть сервер A, который проксирует весь трафик на /rails
на сервер B.
Итак, я настраиваю этот виртуальный хост, и большинство вещей работает... хорошо. link_to
сломан и генерирует URL-адреса /users
в отличие от /rails/users
, но я могу обойти это.
Если я установил config.action_controller.relative_url_root
в /rails
, тогда мои маршруты будут работать нормально, ЗА ИСКЛЮЧЕНИЕМ всех маршрутов разработки. Они указывают на пустой URL. Как правильно настроить сервер B, чтобы понять, что он работает в подкаталоге и правильно генерирует ссылки и маршруты?
<VirtualHost *:80>
ServerName http://ec2-url.compute-1.amazonaws.com/
SetEnv RDS_HOSTNAME "mydb..."
SetEnv RAILS_RELATIVE_URL_ROOT "/rails"
DocumentRoot /home/ubuntu/myapp/public
RailsEnv staging
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/app.log combined
PassengerLogLevel 3
<Directory "/home/ubuntu/myapp/public">
Options FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
Options -MultiViews
Require all granted
</Directory>
</VirtualHost>
Я использую Rails 4.
Ответы
Ответ 1
В файлах среды добавьте конфигурацию для OmniAuth.config.full_host
.
OmniAuth.config.full_host = 'http://myfullurl/subdir'
Теперь, в application_controller.rb
, добавьте этот метод:
def after_sign_in_path_for(resource_or_scope)
path = super(resource_or_scope)
"#{OmniAuth.config.full_host}#{path}"
end
Ответ 2
Было бы здорово, если вы поделитесь своим routes.rb
, но я думаю, что простой способ изменить разрабатываемые маршруты состоит в следующем: routes.rb
scope '/rails' do
devise_for :users
end