Как справиться с одноразовыми задачами развертывания с помощью capistrano? - PullRequest
5 голосов
/ 26 января 2010

В настоящее время я пытаюсь максимально автоматизировать процесс развертывания нашего приложения rails, чтобы чистая сборка на сервере CI могла запустить автоматическое развертывание на тестовом сервере.

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

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

В идеале я ищу что-то вроде миграции, но вместо базы данных она должна отслеживать сценарии, которые нужно вызывать во время развертывания. Такой зверь уже существует?

Ответы [ 3 ]

2 голосов
/ 04 февраля 2014

Похоже, after_party гем делает именно то, что вы хотите.

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

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

Вызовите грабли из вашей миграции. Он обновит существующие данные, и в будущем новые записи будут обрабатываться логикой вашего приложения.

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

Я не могу придумать ничего, что делает именно то, что вы хотите, но если вам просто нужно иметь возможность запускать задачи на удаленных серверах по одному, вы всегда можете использовать rake через capistrano.

Вот такой вот вопрос: Как запустить грабли из Capistrano? , которая также ссылается на эту статью http://ananelson.com/said/on/2007/12/30/remote-rake-tasks-with-capistrano/.

Редактировать: Интересно, возможно ли этосоздать миграцию, которая не вносит никаких изменений в базу данных, а просто вызывает задачу rake?Rake::Task["task:name"].invoke.Стоит попробовать?

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