Commit 3f7a7a8b683cab42f30521d8d3dea26a5e00918f

Authored by Braulio Bhavamitra
1 parent 5a911ba4

Better support for plugins migrations

Showing 1 changed file with 15 additions and 20 deletions   Show diff stats
lib/tasks/plugins.rake
  1 +require 'active_record'
  2 +require_dependency 'active_record/migration'
  3 +
  4 +class ActiveRecord::Migrator
  5 + alias_method :orig_initialize, :initialize
  6 + def initialize *args
  7 + orig_initialize *args
  8 + @migrations_path = "{db/migrate,config/plugins/*/db/migrate}"
  9 + end
  10 +end
  11 +
1 12 namespace :noosfero do
2 13 namespace :plugins do
3   - plugin_migration_dirs = Dir.glob(File.join(Rails.root, 'config', 'plugins', '*', 'db', 'migrate'))
  14 + plugin_migration_dirs = Dir.glob(File.join(Rails.root, 'config',
  15 + 'plugins', '*', 'db', 'migrate'))
4 16 task :migrate do
5 17 plugin_migration_dirs.each do |path|
6   - ActiveRecord::Migrator.migrate(path, ENV["VERSION"] ? ENV["VERSION"].to_i : nil)
7   - end
8   - end
9   - task :abort_if_pending_migrations do
10   - if defined? ActiveRecord
11   - pending_migrations = plugin_migration_dirs.map do |path|
12   - ActiveRecord::Migrator.new(:up, path).pending_migrations
13   - end.flatten
14   -
15   - if pending_migrations.any?
16   - puts "You have #{pending_migrations.size} pending migrations:"
17   - pending_migrations.each do |pending_migration|
18   - puts ' %4d %s' % [pending_migration.version, pending_migration.name]
19   - end
20   - abort %{Run "rake db:migrate" to update your database then try again.}
21   - end
  18 + ActiveRecord::Migrator.migrate(path, ENV["VERSION"] ?
  19 + ENV["VERSION"].to_i : nil)
22 20 end
23 21 end
24 22 end
25 23 end
26   -
27   -task 'db:migrate' => 'noosfero:plugins:migrate'
28   -task 'db:abort_if_pending_migrations' => 'noosfero:plugins:abort_if_pending_migrations'
... ...