standalone_migrations 0.4.10 → 0.4.11

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/README.markdown CHANGED
@@ -109,6 +109,14 @@ This will create a migration in db/migrations/
109
109
 
110
110
  rake db:migrate:up VERSION=20081220234130
111
111
 
112
+ ### To revert your last migration
113
+
114
+ rake db:rollback
115
+
116
+ ### To revert your last 3 migrations
117
+
118
+ rake db:rollback STEP=3
119
+
112
120
  ## Sub-namespacing
113
121
 
114
122
  When working with multiple databases in a single application it is convenient
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.4.10
1
+ 0.4.11
@@ -83,6 +83,15 @@ class MigratorTasks < ::Rake::TaskLib
83
83
  end
84
84
  Rake::Task["db:#{sub_namespace_with_separator}schema:dump"].execute
85
85
  end
86
+
87
+ desc "Revert the last migration applied. Revert multiple migrations with STEP=x."
88
+ task :rollback => :ar_init do
89
+ step = ENV['STEP'] ? ENV['STEP'].to_i : 1
90
+ @migrations.each do |path|
91
+ ActiveRecord::Migrator.rollback(path, step)
92
+ end
93
+ Rake::Task["db:#{sub_namespace_with_separator}schema:dump"].execute
94
+ end
86
95
 
87
96
  desc "Retrieves the current schema version number"
88
97
  task :version => :ar_init do
@@ -258,7 +267,7 @@ class MigratorTasks < ::Rake::TaskLib
258
267
  task :purge => "db:#{sub_namespace_with_separator}ar_init" do
259
268
  config = ActiveRecord::Base.configurations['test']
260
269
  case config["adapter"]
261
- when "mysql"
270
+ when *["mysql", "mysql2"]
262
271
  ActiveRecord::Base.establish_connection(:test)
263
272
  ActiveRecord::Base.connection.recreate_database(config["database"], config)
264
273
  when "postgresql" #TODO i doubt this will work <-> methods are not defined
@@ -57,6 +57,20 @@ describe 'Standalone migrations' do
57
57
  end
58
58
  TXT
59
59
  end
60
+
61
+ def write_reversible_migration
62
+ write "db/migrations/20110703102233_create_tests.rb", <<-TXT
63
+ class CreateTests < ActiveRecord::Migration
64
+ def self.up
65
+ puts "UP-CreateTests"
66
+ end
67
+
68
+ def self.down
69
+ puts "DOWN-CreateTests"
70
+ end
71
+ end
72
+ TXT
73
+ end
60
74
 
61
75
  def write_multiple_migrations
62
76
  write_rakefile %{t.migrations = "db/migrations", "db/migrations2"}
@@ -198,6 +212,30 @@ end
198
212
  end
199
213
  end
200
214
  end
215
+
216
+ describe 'db:rollback' do
217
+ it "does nothing when no migrations have been run" do
218
+ run("rake db:rollback").should =~ /SUCCESS/
219
+ end
220
+
221
+ it "rolls back the last migration if one has been applied" do
222
+ write_reversible_migration
223
+ run("rake db:migrate")
224
+
225
+ result = run("rake db:rollback")
226
+ result.should =~ /SUCCESS/
227
+ result.should =~ /reverted/
228
+ end
229
+
230
+ it "rolls back multiple migrations if the STEP argument is given" do
231
+ write_multiple_migrations
232
+ run("rake db:migrate")
233
+
234
+ result = run("rake db:rollback STEP=2")
235
+ result.should =~ /SUCCESS/
236
+ result.should =~ /reverted/
237
+ end
238
+ end
201
239
 
202
240
  describe 'db:migrate:down' do
203
241
  context "single migration path" do
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{standalone_migrations}
8
- s.version = "0.4.10"
8
+ s.version = "0.4.11"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Todd Huss", "Michael Grosser"]
12
- s.date = %q{2011-06-06}
12
+ s.date = %q{2011-07-07}
13
13
  s.email = %q{thuss@gabrito.com}
14
14
  s.extra_rdoc_files = [
15
15
  "README.markdown"
@@ -30,9 +30,6 @@ Gem::Specification.new do |s|
30
30
  s.require_paths = ["lib"]
31
31
  s.rubygems_version = %q{1.3.7}
32
32
  s.summary = %q{A thin wrapper to use Rails Migrations in non Rails projects}
33
- s.test_files = [
34
- "spec/standalone_migrations_spec.rb"
35
- ]
36
33
 
37
34
  if s.respond_to? :specification_version then
38
35
  current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
metadata CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
5
5
  segments:
6
6
  - 0
7
7
  - 4
8
- - 10
9
- version: 0.4.10
8
+ - 11
9
+ version: 0.4.11
10
10
  platform: ruby
11
11
  authors:
12
12
  - Todd Huss
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2011-06-06 00:00:00 -07:00
18
+ date: 2011-07-07 00:00:00 -07:00
19
19
  default_executable:
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency
@@ -95,5 +95,5 @@ rubygems_version: 1.3.7
95
95
  signing_key:
96
96
  specification_version: 3
97
97
  summary: A thin wrapper to use Rails Migrations in non Rails projects
98
- test_files:
99
- - spec/standalone_migrations_spec.rb
98
+ test_files: []
99
+