Rails rake задача для загрузки активной (MySQL) базы данных в локальную базу данных разработки - PullRequest
5 голосов
/ 25 ноября 2010

В течение многих лет я использовал канал ssh от mysqldump на работающем сервере до mysql на моей машине для разработки для получения копии текущих данных.

ssh -C <server> mysqldump --opt <live_database_name> |mysql <local_dev_database_name>

Где -Cвключает сжатие ssh, а --opt - скорость и полноту.

У кого-нибудь есть для этого эквивалентная задача rake-ish?В идеале это будет принимать имена баз данных из config / database.yml

Ответы [ 5 ]

4 голосов
/ 21 декабря 2010

https://gist.github.com/750129

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

Но это то, что вы можете поместить в SCM в lib / tasks, чтобы поделиться им с другими разработчиками в вашей команде.Он также использует данные конфигурации из вашего существующего файла config / database.yml.Вы определяете динамическую базу данных, просто добавляя другую ветвь в этот файл, и она использует те же имена ключей, что и Rails.

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

2 голосов
/ 20 декабря 2010

Вот один, который я использую для базы данных Postgres: https://gist.github.com/748222.

Есть три задания: db:download, db:replace и db:restore. db:restore - это просто обертка вокруг двух других.

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

1 голос
/ 21 декабря 2010

Вместо того, чтобы использовать для этого rake, я бы использовал задачу capistrano, поскольку ваши задачи capistrano уже знали бы, где находится производственный сервер и т. Д. *

1 голос
/ 25 ноября 2010

Если вы хорошо разбираетесь в кодировании на Ruby, вам может понадобиться seed-fu и activerecord-import .

О, я забыл упомянуть автономные миграции . Он поставляется с задачей Rake для миграции схемы.

Удачи!

0 голосов
/ 17 декабря 2010

Теоретически вы должны иметь возможность создать еще один «экземпляр» в database.yml (для вашего живого сервера) и поместить туда правильный хост (и оставить остальные логин / пароли и т. Д.).В вашей задаче rake вы загружаете файл yaml базы данных, читаете хост и продолжаете работать с командной строкой.Это могло легко быть обернуто в задаче граблей.

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