Один код рельсов, несколько приложений, адресованных доменным именем - PullRequest
1 голос
/ 02 марта 2011

У меня есть приложение rails, которое я бы хотел обслуживать на разных сайтах, отличающихся доменным именем. Хотя код один и тот же, конфигурация другая. Вероятно, данные для всех приложений будут помещены в одну базу данных с разными префиксами таблиц. Я использую rails3, и там возможно определение префиксов таблиц (хотя я не проверял rails2, хотя, возможно, и там).

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

Моя текущая идея решить описанную проблему заключается в следующем:

  1. при поступлении запроса промежуточное ПО перехватывает доменное имя
  2. на основе доменного имени определяется префикс, но, естественно, только для фактического запроса
  3. читатель table_prefix activerecord будет изменен, после чего он возвращает префикс, определенный для фактического домена
  4. .. возможно, будут некоторые другие конфигурации, которые должны отражаться на реальном домене

Я хотел бы спросить, стоит ли даже пытаться. Какую возможную ловушку я должен признать? Или уже есть жемчужины для проблемы, которую я пытаюсь решить здесь? Как бы вы попытались решить эту вещь?

Спасибо за вашу помощь!

Ответы [ 2 ]

3 голосов
/ 12 апреля 2011

Что вам действительно нужно посмотреть, так это то, как Rails управляет call через Rack.
Rack позволяет подключить действительный веб-запрос практически к любой Rack-совместимой конечной точке, например, к другому приложению Rails 3. Вы передаете свои данные как :xml или :json другому приложению.

Я не уверен, как бы вы сделали это, не дублируя структуру данных, используя промежуточную модель в обоих приложениях. Недостатком является то, что вы создаете и передаете несколько копий одних и тех же данных, так что это будет очень медленно, если вы имеете дело с большим количеством информации.

1 голос
/ 02 марта 2011

Зачем вам беспокоиться?Просто создайте отдельные базы данных и запустите отдельные экземпляры единорога для различных конфигураций и избавьте себя от боли и хлопот.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...