Соединение с базой данных Rails в инициализаторе или коде среды - PullRequest
0 голосов
/ 03 июня 2011

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

Я только что получил ответ от Engineyard, что они воссоздают файл database.yml на своем конце, и в результате данные удаленного соединения с базой данных теряются.

Ответ от EngineYard

Часть нашего процесса развертывания запишет файл database.yml, чтобы вы могли подключиться к базе данных, которую мы настроили для вас. Если вы используете SSH в своем экземпляре, вы можете увидеть тот, который мы пишем для вас, по адресу /data/mls_data_norm/current/config/database.yml.

Если вы хотите настроить это, вам нужно будет сделать одну из двух вещей. Один из них - установить другой инициализатор или код среды, который будет подключаться к этой другой БД. Другим (и, вероятно, предпочтительным) является использование собственного рецепта шеф-повара для этого. Вы можете прочитать больше об этом здесь: http://docs.engineyard.com/custom-chef-recipes.html

Я не знаю, как долго я буду хостинг на Engineyard, и мне не нравится идея запускать другой код локально, чем в производственном процессе. Вся эта «рецептность» заставляет меня думать, что в дальнейшем я переписываю эту связь.

Я уверен, что есть способ определить соединение с базой данных вне файла database.yml, но я не знаю как, и мои поиски пока ничего не дали.

1 Ответ

0 голосов
/ 04 июня 2011

Единственная цель database.yml - сохранить параметры подключения, и поскольку EngineYard делает глупости, это не означает, что вам нужно переместить параметры подключения в другое место.

Лучшим решением было бы позаботиться о своем развертывании самостоятельно. Потратьте пару часов на чтение capistrano документации, и вы будете готовы к работе. Это простой, элегантный и гораздо более мощный. Вскоре вы будете делать гораздо больше вещей, связанных с развертыванием, используя capistrano, чем то, что предоставляет ваш хост.

https://github.com/capistrano/capistrano/wiki

Другие параметры включают запуск сценария после развертывания, который снова перезаписывает database.yml и выполняет перезапуск сервера.

...