Больше виртуальных хостов на одном приложении rails - PullRequest
1 голос
/ 13 января 2010

Я хотел бы получить доступ к одному приложению rails через несколько виртуальных хостов. Различные виртуальные хосты будут различаться по базе данных, изображениям, таблицам стилей и, в некоторых случаях, по расположению представлений. Что вы рекомендуете для реализации обслуживания нескольких приложений одним кодом, доступ к которому осуществляется через разные виртуальные хосты?

Отредактировано

Чтобы указать, что я представляю лучше, я добавляю:

  • Я предпочитаю, чтобы rails различал, какие базы данных / стили / изображения / макеты должны использовать, основываясь на имени хоста.
  • Могут быть запущены разные приложения rails, но над одним и тем же кодом.
  • Соединения базы данных могут быть установлены во время инициализации приложения.

Мне интересно, какой слой приложение rails должно распознавать хост? Это должно быть в промежуточном программном обеспечении, в загрузочных скриптах или где-то еще?

Ответы [ 2 ]

1 голос
/ 13 января 2010

Для базы данных:

Вы можете установить специальный параметр в маршрутах, например:

/: клиент /: контроллер /: действие

, а затем используйте params [: client] для ручной настройки ActiveRecord :: Base.establish_connection (...) из ApplicationController before_filter (я сделал это и он работает)

см. Пример кода здесь: ruby-forum

Для таблиц стилей, изображений ...: Используйте виртуальный хост apache o nginx для разделения public / images и других (как вы должны сделать, чтобы обслуживать напрямую без направляющих) и выберите там, где вы выбираете их. (вам может понадобиться mod_rewrite o эквивалент для этого)

Макеты могут быть немного сложнее, лучше иметь общий erb, который разумно загружает партиалы в зависимости от параметров [: client].

Надеюсь, это поможет.

0 голосов
/ 13 января 2010

Я не знаю рельсов, но я знаю, как бы я это делал в Джанго. Я сомневаюсь, что основная логика такова.

Я бы сообщал серверу, какие хосты принимать (включая подстановочные знаки, если я хотел), а затем велел моему веб-приложению просмотреть домен запроса (который передается через веб-сервер).

Как вы меняете различные вещи с этого момента, зависит только от вас.

...