Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
24 changes: 13 additions & 11 deletions lib/migration_tools/migration_extension.rb
Original file line number Diff line number Diff line change
@@ -1,14 +1,15 @@
module MigrationTools
module MigrationExtension
module ClassMethods
attr_accessor :migration_group

attr_accessor :migration_group
def group(arg = nil)
unless MigrationTools::MIGRATION_GROUPS.member?(arg.to_s)
raise "Invalid group \"#{arg.to_s}\" - valid groups are #{MigrationTools::MIGRATION_GROUPS.inspect}"
end

def group(arg = nil)
unless MigrationTools::MIGRATION_GROUPS.member?(arg.to_s)
raise "Invalid group \"#{arg.to_s}\" - valid groups are #{MigrationTools::MIGRATION_GROUPS.inspect}"
self.migration_group = arg.to_s
end

self.migration_group = arg.to_s
end

def migrate_with_forced_groups(direction)
Expand All @@ -21,14 +22,15 @@ def migrate_with_forced_groups(direction)
end

ActiveRecord::Migration.class_eval do
extend MigrationTools::MigrationExtension
class << self
alias_method :migrate_without_forced_groups, :migrate
alias_method :migrate, :migrate_with_forced_groups
end
extend MigrationTools::MigrationExtension::ClassMethods
include MigrationTools::MigrationExtension

alias_method :migrate_without_forced_groups, :migrate
alias_method :migrate, :migrate_with_forced_groups

def migration_group
self.class.migration_group
end
end

ActiveRecord::MigrationProxy.delegate :migration_group, :to => :migration
12 changes: 7 additions & 5 deletions test/test_migration_tools.rb
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,10 @@
@task = MigrationTools::Tasks.new
end

after do
MigrationTools.instance_variable_set('@forced', false)
end

def migrations
[ Alpha, Beta, Delta, Kappa ]
end
Expand Down Expand Up @@ -56,17 +60,15 @@ def migration_proxy(m)

it "forcing" do
assert !MigrationTools.forced?
Kappa.migrate("up")

MigrationTools.forced!
assert MigrationTools.forced?

Alpha.migrate("up")
@task.migrator(0).run

begin
Kappa.migrate("up")
@task.migrator(3).run
fail "You should not be able to run migrations without groups in forced mode"
rescue RuntimeError => e
rescue => e
assert e.message =~ /Cowardly refusing/
end
end
Expand Down