capistrano: db роль, для чего она? - PullRequest
12 голосов
/ 20 марта 2012

Насколько я могу судить, роль capistrano :db используется только для запуска миграций.

(Таким образом, в большинстве случаев, вероятно, не должен на самом деле быть сервером, на котором работает ваша база данных. Зачем вам иметь там стек ruby ​​/ rails (или разрешить вход в систему по ssh)? сервер, на котором вы хотите выполнить миграцию рельсов).

И только сервер, обозначенный как роль db с :primary => true, используется для запуска миграций.

Таким образом, любые другие серверы, идентифицированные как роль 'db', но без :primary => true ... используются вообще ни для чего? Так почему по умолчанию файл deploy.rb, созданный capify ., побуждает вас перечислять их? Что бы вы здесь перечислили?

Что-нибудь, что мне не хватает?

Ответы [ 2 ]

21 голосов
/ 30 ноября 2012

Очевидно, что название роли :db вводит в заблуждение.Как вы указали, Capistrano определяет его (с :primary => true) как хост, на котором мы выполняем rake db:migrate, но серверы баз данных не всегда работают на таких хостах.Мы можем изменить схему удаленного сервера базы данных через приложение Rails.Правильное имя роли для этого типа хоста не :db.

Исходя из комментариев к lib / capistrano / configuration / role.rb , первоначальное значение роли :db это хост, на котором работают серверы баз данных.Ожидается, что мы войдем в хосты :db и выполним некоторые задачи.

Разработчики Capistrano должны были определить роль :migration или что-то еще для задачи deploy:migrate.Но связь между ролью :db в этой задаче была определена шесть лет назад с помощью 9a6d2fb и с тех пор не изменилась.

Вообще говоря, пользователи Capistrano могут определять роли исвязывать их с задачами свободно.Задача deploy:migrate предоставляется как рецепт для разработчиков Rails.К сожалению, этот рецепт содержит неправильное представление о том, как мы выполняем миграцию базы данных, и широко используется в течение длительного времени.

4 голосов
/ 20 марта 2012

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

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