Несколько database.yml, но одно приложение - PullRequest
1 голос
/ 13 октября 2010

Настройка

У меня есть приложение Ruby on Rails, которым я управляю с точки зрения системного администратора.Это приложение установлено в пуле серверов приложений с балансировкой нагрузки.Эти серверы приложений работают под управлением Apache 2 и Passenger 3.0.Файлы приложений хранятся на виртуальном диске, поскольку операции ввода-вывода на серверах приложений смехотворно медленны.

Конфигурация базы данных

Бэкэнд-база данных хранится в паре кластеров MySQL (активный / пассивный).Несколько клиентов используют наше приложение, и у каждого есть отдельная база данных MySQL.

В настоящее время у нас есть X копий приложения (X - количество клиентов).Разница между каждой копией заключается только в файле database.yml.Поскольку мы используем виртуальные диски, дисковое пространство стоит дорого, и я думаю, что должен быть лучший способ решить эту проблему.

Потенциальные решения

В идеале, я бы хотелбыть в состоянии указать database.yml в виртуальном хосте Apache, но это не представляется возможным с моей текущей настройкой.Файл database.yml будет присоединен к имени домена, к которому осуществляется доступ.Если есть способ сделать это, это было бы действительно здорово.

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

Как бы вы подошли к этой проблеме и решили ее?

Если вам нужна дополнительная информация, просто спросите иЯ буду рад ответить.Я не уверен, относится ли это к SF или SO, но пахнет больше SO для меня.

Ответы [ 2 ]

2 голосов
/ 18 октября 2010

Как сказал Младен, вы можете использовать RailsEnv.Это в значительной степени идеальное решение вашей проблемы, оно предназначено для использования таким образом.Только не забудьте установить разные значения PassengerAppGroupName для каждого env, потому что Phusion Passenger обычно однозначно идентифицирует приложение только по его пути.Также не забудьте создать файл config / initializers / [env name] .rb.

0 голосов
/ 13 октября 2010

Возможно, вы можете использовать тот же database.yml, но использовать разные среды? Вы должны иметь возможность устанавливать различные среды Rails, используя разные параметры RailsEnv в настройках virtualhost .

...