migration_tools 0.1.4 → 0.1.5

Sign up to get free protection for your applications and to get access to all the features.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.1.4
1
+ 0.1.5
@@ -1,6 +1,8 @@
1
1
  module MigrationTools
2
2
  module MigrationExtension
3
+
3
4
  attr_accessor :migration_group
5
+
4
6
  def group(arg = nil)
5
7
  unless MigrationTools::MIGRATION_GROUPS.member?(arg.to_s)
6
8
  raise "Invalid group \"#{arg.to_s}\" - valid groups are #{MigrationTools::MIGRATION_GROUPS.inspect}"
@@ -8,8 +10,20 @@ module MigrationTools
8
10
 
9
11
  self.migration_group = arg.to_s
10
12
  end
13
+
14
+ def migrate_with_forced_groups(direction)
15
+ if MigrationTools.forced? && migration_group.blank?
16
+ raise "Cowardly refusing to run migration without group. Ner ner ner ner ner, shame shame shame."
17
+ end
18
+ migrate_without_forced_groups(direction)
19
+ end
11
20
  end
12
21
  end
13
22
 
14
- ActiveRecord::Migration.class_eval { extend MigrationTools::MigrationExtension }
23
+ ActiveRecord::Migration.class_eval do
24
+ extend MigrationTools::MigrationExtension
25
+ class << self
26
+ alias_method_chain :migrate, :forced_groups
27
+ end
28
+ end
15
29
  ActiveRecord::MigrationProxy.delegate :migration_group, :to => :migration
@@ -5,5 +5,13 @@ require 'migration_tools/migration_extension'
5
5
  require 'migration_tools/tasks'
6
6
 
7
7
  module MigrationTools
8
+ def self.forced?
9
+ !!@forced
10
+ end
11
+
12
+ def self.forced!
13
+ @forced = true
14
+ end
15
+
8
16
  MIGRATION_GROUPS = [ 'before', 'during', 'after', 'change' ]
9
17
  end
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{migration_tools}
8
- s.version = "0.1.4"
8
+ s.version = "0.1.5"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Morten Primdahl"]
12
- s.date = %q{2010-12-21}
12
+ s.date = %q{2011-01-13}
13
13
  s.description = %q{Suite of task extensions for Rails 2.3 that makes managing migrations easier of more nimble}
14
14
  s.email = %q{morten@zendesk.com}
15
15
  s.extra_rdoc_files = [
@@ -63,6 +63,22 @@ class TestMigrationTools < Test::Unit::TestCase
63
63
  assert_equal "change", proxy.migration_group
64
64
  end
65
65
 
66
+ def test_forcing
67
+ assert !MigrationTools.forced?
68
+ Kappa.migrate("up")
69
+
70
+ MigrationTools.forced!
71
+ assert MigrationTools.forced?
72
+
73
+ Alpha.migrate("up")
74
+ begin
75
+ Kappa.migrate("up")
76
+ fail "You should not be able to run migrations without groups in forced mode"
77
+ rescue RuntimeError => e
78
+ assert e.message =~ /Cowardly refusing/
79
+ end
80
+ end
81
+
66
82
  def test_task_presence
67
83
  assert Rake::Task["db:migrate:list"]
68
84
  assert Rake::Task["db:migrate:group"]
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: migration_tools
3
3
  version: !ruby/object:Gem::Version
4
- hash: 19
4
+ hash: 17
5
5
  prerelease: false
6
6
  segments:
7
7
  - 0
8
8
  - 1
9
- - 4
10
- version: 0.1.4
9
+ - 5
10
+ version: 0.1.5
11
11
  platform: ruby
12
12
  authors:
13
13
  - Morten Primdahl
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2010-12-21 00:00:00 -08:00
18
+ date: 2011-01-13 00:00:00 -08:00
19
19
  default_executable:
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency