From 47a033d07fd92f866d1ee0181527791a2b91a592 Mon Sep 17 00:00:00 2001 From: Antonio Terceiro Date: Thu, 6 Jan 2011 12:38:40 -0300 Subject: [PATCH] Enhanced support for plugin migrations --- lib/tasks/plugins.rake | 31 ++++++++++++++++++++++++++----- 1 file changed, 26 insertions(+), 5 deletions(-) diff --git a/lib/tasks/plugins.rake b/lib/tasks/plugins.rake index bc10f23..7e23021 100644 --- a/lib/tasks/plugins.rake +++ b/lib/tasks/plugins.rake @@ -1,9 +1,30 @@ -namespace :plugins do - task :migrate do - Dir.glob(File.join(Rails.root, 'config', 'plugins', '*', 'db', 'migrate')).each do |path| - ActiveRecord::Migrator.migrate(path, ENV["VERSION"] ? ENV["VERSION"].to_i : nil) +ActiveRecord::SchemaDumper.ignore_tables << /_plugin_/ + +namespace :noosfero do + namespace :plugins do + plugin_migration_dirs = Dir.glob(File.join(Rails.root, 'config', 'plugins', '*', 'db', 'migrate')) + task :migrate do + plugin_migration_dirs.each do |path| + ActiveRecord::Migrator.migrate(path, ENV["VERSION"] ? ENV["VERSION"].to_i : nil) + end + end + task :abort_if_pending_migrations do + if defined? ActiveRecord + plugin_migration_dirs.each do |path| + pending_migrations = ActiveRecord::Migrator.new(:up, path).pending_migrations + + if pending_migrations.any? + puts "You have #{pending_migrations.size} pending migrations:" + pending_migrations.each do |pending_migration| + puts ' %4d %s' % [pending_migration.version, pending_migration.name] + end + abort %{Run "rake db:migrate" to update your database then try again.} + end + end + end end end end -task 'db:migrate' => 'plugins:migrate' +task 'db:migrate' => 'noosfero:plugins:migrate' +task 'db:abort_if_pending_migrations' => 'noosfero:plugins:abort_if_pending_migrations' -- libgit2 0.21.2