вся магия развертывания базы данных — это собственная функциональность RoR, вы можете имитировать ее, чтобы получить те же результаты.
Вам нужно будет подготовить сценарии для переноса вашей базы данных, поэтому не используйте один сценарий, для каждого изменения базы данных требуется новый сценарий. Вам также нужно где-то хранить список уже выполненных миграций, для этого rails использует таблицу базы данных, но для этого тоже может подойти файл.
Вы можете попробовать с этим кодом:
set :mysql_params, "-u user -ppassword"
set :mysql_db_name, "database_name"
after :deploy, :migrate
desc "migrate database on server"
task :migrate do
run "touch #{shared_path}/migration.list ;
ls -1v #{current_path}/sql/*.sql 2>/dev/null > #{shared_path}/migration.available;
diff #{shared_path}/migration.available #{shared_path}/migration.list | awk \"/^</ {print \\$2}\" | while read f ;
do echo \"migrating $(basename $f)\"; mysql #{mysql_params} #{mysql_db_name} < $f && echo $f >> #{shared_path}/migration.list ; done;
rm -f #{shared_path}/migration.available"
end
after "deploy:setup", :create_db
desc "create database on server"
task :create_db do
run "mysql #{mysql_params} -e \"CREATE DATABASE #{mysql_db_name}\""
end
и самое главное, чтобы сохранить порядок миграций, вы должны называть свои миграции последовательными номерами или датой_времени, поэтому пример вывода ls -1v #{current_path}/migrations/*.sql
будет выглядеть так:
0001_create_database.sql
0002_create_user_table.sql
0003_add_password_to_users.sql
20101205_141534_add_admin_user.sql
20110108_090712_create_post_table.sql
20110210_165609_create_comment_table.sql
записи date_time используют формат YYYYmmdd_hhMMss_title.sql
person
mpapis
schedule
16.03.2011