mongoid_rails_migrations 1.1.1 → 1.2.0
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.
- checksums.yaml +4 -4
- data/lib/mongoid_rails_migrations/active_record_ext/migrations.rb +55 -13
- data/lib/mongoid_rails_migrations/mongoid_ext/railties/database.rake +13 -1
- data/lib/mongoid_rails_migrations/version.rb +1 -1
- data/mongoid_rails_migrations.gemspec +21 -25
- metadata +25 -36
- data/.gitignore +0 -6
- data/Gemfile +0 -7
- data/Gemfile.lock +0 -142
- data/README.rdoc +0 -56
- data/Rakefile +0 -13
- data/test/config.rb +0 -9
- data/test/helper.rb +0 -34
- data/test/migration_test.rb +0 -165
- data/test/migrations/duplicate/names/20100513073457_add_duplicate_survey_schema.rb +0 -9
- data/test/migrations/duplicate/names/20100513073724_add_duplicate_survey_schema.rb +0 -9
- data/test/migrations/duplicate/versions/20100513073457_add_another_duplicate_survey_schema.rb +0 -9
- data/test/migrations/duplicate/versions/20100513073457_add_duplicate_survey_schema.rb +0 -9
- data/test/migrations/other_valid/20160509073459_add_other_plan_survey_schema.rb +0 -9
- data/test/migrations/valid/20100513054656_add_baseline_survey_schema.rb +0 -10
- data/test/migrations/valid/20100513063902_add_improvement_plan_survey_schema.rb +0 -9
- data/test/models/survey_schema.rb +0 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 258e610c43efd94878675b841b0c046473d033d1
|
4
|
+
data.tar.gz: 3e2ce38153ee9bfc6ff7b3a2b0c0c87e8e823d69
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 311fa5ed6d1f24305753750b4967caf4660b8dd106af34e7a86960e2d23cd674ddf8fa2b5af271ebdda892dd62e585494c60c3631ed6d64b66fc30e8af1df153
|
7
|
+
data.tar.gz: 98da99b5a0688b958a731c02e6a7291c4a3292908da441bf3bcc8e6eb5ec0de30de505471b82112a16a052d9cf7183e9bda85cf866815a0dfdc5ea9a8594f151
|
@@ -198,10 +198,25 @@ module Mongoid #:nodoc
|
|
198
198
|
end
|
199
199
|
end
|
200
200
|
|
201
|
+
def status(migrations_path, target_version = nil)
|
202
|
+
case
|
203
|
+
when target_version.nil? then new(:up, migrations_path, target_version).status
|
204
|
+
when current_version > target_version then new(:down, migrations_path, target_version).status
|
205
|
+
else new(:up, migrations_path, target_version).status
|
206
|
+
end
|
207
|
+
end
|
208
|
+
|
201
209
|
def rollback(migrations_path, steps=1)
|
202
210
|
move(:down, migrations_path, steps)
|
203
211
|
end
|
204
212
|
|
213
|
+
def rollback_to(migrations_path, target_version)
|
214
|
+
all_versions = get_all_versions
|
215
|
+
rollback_to = all_versions.index(target_version.to_i) + 1
|
216
|
+
rollback_steps = all_versions.size - rollback_to
|
217
|
+
rollback migrations_path, rollback_steps
|
218
|
+
end
|
219
|
+
|
205
220
|
def forward(migrations_path, steps=1)
|
206
221
|
move(:up, migrations_path, steps)
|
207
222
|
end
|
@@ -287,19 +302,7 @@ module Mongoid #:nodoc
|
|
287
302
|
end
|
288
303
|
|
289
304
|
def migrate
|
290
|
-
|
291
|
-
target = migrations.detect { |m| m.version == @target_version }
|
292
|
-
|
293
|
-
if target.nil? && !@target_version.nil? && @target_version > 0
|
294
|
-
raise UnknownMigrationVersionError.new(@target_version)
|
295
|
-
end
|
296
|
-
|
297
|
-
start = up? ? 0 : (migrations.index(current) || 0)
|
298
|
-
finish = migrations.index(target) || migrations.size - 1
|
299
|
-
runnable = migrations[start..finish]
|
300
|
-
|
301
|
-
# skip the last migration if we're headed down, but not ALL the way down
|
302
|
-
runnable.pop if down? && !target.nil?
|
305
|
+
runnable = runnable_migrations
|
303
306
|
|
304
307
|
runnable.each do |migration|
|
305
308
|
Rails.logger.info "Migrating to #{migration.name} (#{migration.version})" if Rails.logger
|
@@ -331,6 +334,17 @@ module Mongoid #:nodoc
|
|
331
334
|
end
|
332
335
|
end
|
333
336
|
|
337
|
+
def status
|
338
|
+
database_name = Migration.connection.options[:database]
|
339
|
+
puts "\ndatabase: #{database_name}\n\n"
|
340
|
+
puts "#{'Status'.center(8)} #{'Migration ID'.ljust(14)} Migration Name"
|
341
|
+
puts "-" * 50
|
342
|
+
to_run_migrations.each do |migration|
|
343
|
+
status = migrated.include?(migration.version.to_i) ? 'down' : 'up'
|
344
|
+
puts "#{status.center(8)} #{migration.version.to_s.ljust(14)} #{migration.name}"
|
345
|
+
end
|
346
|
+
end
|
347
|
+
|
334
348
|
def migrations
|
335
349
|
@migrations ||= begin
|
336
350
|
files = Array(@migrations_path).inject([]) do |files, path|
|
@@ -368,6 +382,34 @@ module Mongoid #:nodoc
|
|
368
382
|
migrations.reject { |m| already_migrated.include?(m.version.to_i) }
|
369
383
|
end
|
370
384
|
|
385
|
+
def runnable_migrations
|
386
|
+
current = migrations.detect { |m| m.version == current_version }
|
387
|
+
target = migrations.detect { |m| m.version == @target_version }
|
388
|
+
|
389
|
+
if target.nil? && !@target_version.nil? && @target_version > 0
|
390
|
+
raise UnknownMigrationVersionError.new(@target_version)
|
391
|
+
end
|
392
|
+
|
393
|
+
start = up? ? 0 : (migrations.index(current) || 0)
|
394
|
+
finish = migrations.index(target) || migrations.size - 1
|
395
|
+
runnable = migrations[start..finish]
|
396
|
+
|
397
|
+
# skip the last migration if we're headed down, but not ALL the way down
|
398
|
+
runnable.pop if down? && !target.nil?
|
399
|
+
|
400
|
+
runnable
|
401
|
+
end
|
402
|
+
|
403
|
+
def to_run_migrations
|
404
|
+
runnable_migrations.select do |migration|
|
405
|
+
if up?
|
406
|
+
!migrated.include?(migration.version.to_i)
|
407
|
+
elsif down?
|
408
|
+
migrated.include?(migration.version.to_i)
|
409
|
+
end
|
410
|
+
end
|
411
|
+
end
|
412
|
+
|
371
413
|
def migrated
|
372
414
|
@migrated_versions ||= self.class.get_all_versions
|
373
415
|
end
|
@@ -71,6 +71,11 @@ namespace :db do
|
|
71
71
|
raise "VERSION is required" unless version
|
72
72
|
Mongoid::Migrator.run(:down, Mongoid::Migrator.migrations_path, version)
|
73
73
|
end
|
74
|
+
|
75
|
+
desc 'Display status of migrations'
|
76
|
+
task :status => :environment do
|
77
|
+
Mongoid::Migrator.status("db/migrate/", ENV["VERSION"] ? ENV["VERSION"].to_i : nil)
|
78
|
+
end
|
74
79
|
end
|
75
80
|
|
76
81
|
desc 'Rolls the database back to the previous migration. Specify the number of steps with STEP=n'
|
@@ -79,6 +84,13 @@ namespace :db do
|
|
79
84
|
Mongoid::Migrator.rollback(Mongoid::Migrator.migrations_path, step)
|
80
85
|
end
|
81
86
|
|
87
|
+
desc 'Rolls the database back to the specified VERSION'
|
88
|
+
task :rollback_to => :environment do
|
89
|
+
version = ENV["VERSION"] ? ENV["VERSION"].to_i : nil
|
90
|
+
raise "VERSION is required" unless version
|
91
|
+
Mongoid::Migrator.rollback_to('db/migrate/', version)
|
92
|
+
end
|
93
|
+
|
82
94
|
namespace :schema do
|
83
95
|
task :load do
|
84
96
|
# noop
|
@@ -90,4 +102,4 @@ namespace :db do
|
|
90
102
|
# Stub out for MongoDB
|
91
103
|
end
|
92
104
|
end
|
93
|
-
end
|
105
|
+
end
|
@@ -1,32 +1,28 @@
|
|
1
|
-
|
1
|
+
lib = File.expand_path('../lib', __FILE__)
|
2
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
3
|
+
require 'mongoid_rails_migrations/version'
|
2
4
|
|
3
|
-
Gem::Specification.new do |
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
s.license = 'MIT'
|
9
|
-
s.description = 'Migrations for the migrator.'
|
5
|
+
Gem::Specification.new do |spec|
|
6
|
+
spec.name = 'mongoid_rails_migrations'
|
7
|
+
spec.version = MongoidRailsMigrations::VERSION
|
8
|
+
spec.authors = ['Alan Da Costa']
|
9
|
+
spec.email = ['alandacosta@gmail.com']
|
10
10
|
|
11
|
-
|
12
|
-
|
11
|
+
spec.summary = 'Data migrations for Mongoid.'
|
12
|
+
spec.description = 'Data migrations for Mongoid in Active Record style, minus column input.'
|
13
|
+
spec.homepage = 'http://github.com/adacosta/mongoid_rails_migrations'
|
14
|
+
spec.license = 'MIT'
|
13
15
|
|
14
|
-
|
15
|
-
|
16
|
-
s.date = %q{2015-01-01}
|
17
|
-
s.homepage = 'http://github.com/adacosta/mongoid_rails_migrations'
|
18
|
-
|
19
|
-
s.require_paths = ['lib']
|
20
|
-
s.files = Dir['.gitignore', 'Gemfile', 'Gemfile.lock', 'Rakefile', 'README.rdoc', 'mongoid_rails_migrations.gemspec', 'lib/**/*']
|
21
|
-
s.test_files = Dir['test/**/*']
|
22
|
-
s.has_rdoc = false
|
16
|
+
spec.files = Dir['README.rdoc', 'mongoid_rails_migrations.gemspec', 'lib/**/*']
|
17
|
+
spec.require_paths = ['lib']
|
23
18
|
|
24
19
|
rails_version = '>= 4.2.0'
|
25
20
|
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
21
|
+
spec.add_runtime_dependency('bundler', '>= 1.0.0')
|
22
|
+
spec.add_runtime_dependency('mongoid', '>= 4.0.0')
|
23
|
+
spec.add_runtime_dependency('rails', rails_version)
|
24
|
+
spec.add_runtime_dependency('railties', rails_version)
|
25
|
+
spec.add_runtime_dependency('activesupport', rails_version)
|
26
|
+
spec.add_development_dependency 'rake'
|
27
|
+
spec.add_development_dependency 'minitest'
|
32
28
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mongoid_rails_migrations
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Alan Da Costa
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2018-10-24 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -94,17 +94,27 @@ dependencies:
|
|
94
94
|
- - ">="
|
95
95
|
- !ruby/object:Gem::Version
|
96
96
|
version: '0'
|
97
|
-
|
98
|
-
|
97
|
+
- !ruby/object:Gem::Dependency
|
98
|
+
name: minitest
|
99
|
+
requirement: !ruby/object:Gem::Requirement
|
100
|
+
requirements:
|
101
|
+
- - ">="
|
102
|
+
- !ruby/object:Gem::Version
|
103
|
+
version: '0'
|
104
|
+
type: :development
|
105
|
+
prerelease: false
|
106
|
+
version_requirements: !ruby/object:Gem::Requirement
|
107
|
+
requirements:
|
108
|
+
- - ">="
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
version: '0'
|
111
|
+
description: Data migrations for Mongoid in Active Record style, minus column input.
|
112
|
+
email:
|
113
|
+
- alandacosta@gmail.com
|
99
114
|
executables: []
|
100
115
|
extensions: []
|
101
116
|
extra_rdoc_files: []
|
102
117
|
files:
|
103
|
-
- ".gitignore"
|
104
|
-
- Gemfile
|
105
|
-
- Gemfile.lock
|
106
|
-
- README.rdoc
|
107
|
-
- Rakefile
|
108
118
|
- lib/mongoid_rails_migrations.rb
|
109
119
|
- lib/mongoid_rails_migrations/active_record_ext/migrations.rb
|
110
120
|
- lib/mongoid_rails_migrations/models/data_migration.rb
|
@@ -116,17 +126,6 @@ files:
|
|
116
126
|
- lib/rails/generators/mongoid/migration/templates/migration.rb
|
117
127
|
- lib/rails/generators/mongoid/mongoid_generator.rb
|
118
128
|
- mongoid_rails_migrations.gemspec
|
119
|
-
- test/config.rb
|
120
|
-
- test/helper.rb
|
121
|
-
- test/migration_test.rb
|
122
|
-
- test/migrations/duplicate/names/20100513073457_add_duplicate_survey_schema.rb
|
123
|
-
- test/migrations/duplicate/names/20100513073724_add_duplicate_survey_schema.rb
|
124
|
-
- test/migrations/duplicate/versions/20100513073457_add_another_duplicate_survey_schema.rb
|
125
|
-
- test/migrations/duplicate/versions/20100513073457_add_duplicate_survey_schema.rb
|
126
|
-
- test/migrations/other_valid/20160509073459_add_other_plan_survey_schema.rb
|
127
|
-
- test/migrations/valid/20100513054656_add_baseline_survey_schema.rb
|
128
|
-
- test/migrations/valid/20100513063902_add_improvement_plan_survey_schema.rb
|
129
|
-
- test/models/survey_schema.rb
|
130
129
|
homepage: http://github.com/adacosta/mongoid_rails_migrations
|
131
130
|
licenses:
|
132
131
|
- MIT
|
@@ -139,27 +138,17 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
139
138
|
requirements:
|
140
139
|
- - ">="
|
141
140
|
- !ruby/object:Gem::Version
|
142
|
-
version:
|
141
|
+
version: '0'
|
143
142
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
144
143
|
requirements:
|
145
144
|
- - ">="
|
146
145
|
- !ruby/object:Gem::Version
|
147
|
-
version:
|
146
|
+
version: '0'
|
148
147
|
requirements: []
|
149
148
|
rubyforge_project:
|
150
|
-
rubygems_version: 2.
|
149
|
+
rubygems_version: 2.5.1
|
151
150
|
signing_key:
|
152
151
|
specification_version: 4
|
153
|
-
summary: Data migrations for Mongoid
|
154
|
-
test_files:
|
155
|
-
|
156
|
-
- test/migrations/duplicate/names/20100513073457_add_duplicate_survey_schema.rb
|
157
|
-
- test/migrations/duplicate/versions/20100513073457_add_duplicate_survey_schema.rb
|
158
|
-
- test/migrations/duplicate/versions/20100513073457_add_another_duplicate_survey_schema.rb
|
159
|
-
- test/migrations/other_valid/20160509073459_add_other_plan_survey_schema.rb
|
160
|
-
- test/migrations/valid/20100513054656_add_baseline_survey_schema.rb
|
161
|
-
- test/migrations/valid/20100513063902_add_improvement_plan_survey_schema.rb
|
162
|
-
- test/migration_test.rb
|
163
|
-
- test/helper.rb
|
164
|
-
- test/config.rb
|
165
|
-
- test/models/survey_schema.rb
|
152
|
+
summary: Data migrations for Mongoid.
|
153
|
+
test_files: []
|
154
|
+
has_rdoc:
|
data/.gitignore
DELETED
data/Gemfile
DELETED
data/Gemfile.lock
DELETED
@@ -1,142 +0,0 @@
|
|
1
|
-
PATH
|
2
|
-
remote: .
|
3
|
-
specs:
|
4
|
-
mongoid_rails_migrations (1.1.0)
|
5
|
-
activesupport (>= 4.2.0)
|
6
|
-
bundler (>= 1.0.0)
|
7
|
-
mongoid (>= 4.0.0)
|
8
|
-
rails (>= 4.2.0)
|
9
|
-
railties (>= 4.2.0)
|
10
|
-
|
11
|
-
GEM
|
12
|
-
remote: http://rubygems.org/
|
13
|
-
specs:
|
14
|
-
actioncable (5.2.0)
|
15
|
-
actionpack (= 5.2.0)
|
16
|
-
nio4r (~> 2.0)
|
17
|
-
websocket-driver (>= 0.6.1)
|
18
|
-
actionmailer (5.2.0)
|
19
|
-
actionpack (= 5.2.0)
|
20
|
-
actionview (= 5.2.0)
|
21
|
-
activejob (= 5.2.0)
|
22
|
-
mail (~> 2.5, >= 2.5.4)
|
23
|
-
rails-dom-testing (~> 2.0)
|
24
|
-
actionpack (5.2.0)
|
25
|
-
actionview (= 5.2.0)
|
26
|
-
activesupport (= 5.2.0)
|
27
|
-
rack (~> 2.0)
|
28
|
-
rack-test (>= 0.6.3)
|
29
|
-
rails-dom-testing (~> 2.0)
|
30
|
-
rails-html-sanitizer (~> 1.0, >= 1.0.2)
|
31
|
-
actionview (5.2.0)
|
32
|
-
activesupport (= 5.2.0)
|
33
|
-
builder (~> 3.1)
|
34
|
-
erubi (~> 1.4)
|
35
|
-
rails-dom-testing (~> 2.0)
|
36
|
-
rails-html-sanitizer (~> 1.0, >= 1.0.3)
|
37
|
-
activejob (5.2.0)
|
38
|
-
activesupport (= 5.2.0)
|
39
|
-
globalid (>= 0.3.6)
|
40
|
-
activemodel (5.2.0)
|
41
|
-
activesupport (= 5.2.0)
|
42
|
-
activerecord (5.2.0)
|
43
|
-
activemodel (= 5.2.0)
|
44
|
-
activesupport (= 5.2.0)
|
45
|
-
arel (>= 9.0)
|
46
|
-
activestorage (5.2.0)
|
47
|
-
actionpack (= 5.2.0)
|
48
|
-
activerecord (= 5.2.0)
|
49
|
-
marcel (~> 0.3.1)
|
50
|
-
activesupport (5.2.0)
|
51
|
-
concurrent-ruby (~> 1.0, >= 1.0.2)
|
52
|
-
i18n (>= 0.7, < 2)
|
53
|
-
minitest (~> 5.1)
|
54
|
-
tzinfo (~> 1.1)
|
55
|
-
arel (9.0.0)
|
56
|
-
bson (4.3.0)
|
57
|
-
builder (3.2.3)
|
58
|
-
coderay (1.1.2)
|
59
|
-
concurrent-ruby (1.0.5)
|
60
|
-
crass (1.0.4)
|
61
|
-
erubi (1.7.1)
|
62
|
-
globalid (0.4.1)
|
63
|
-
activesupport (>= 4.2.0)
|
64
|
-
i18n (1.0.1)
|
65
|
-
concurrent-ruby (~> 1.0)
|
66
|
-
loofah (2.2.2)
|
67
|
-
crass (~> 1.0.2)
|
68
|
-
nokogiri (>= 1.5.9)
|
69
|
-
mail (2.7.0)
|
70
|
-
mini_mime (>= 0.1.1)
|
71
|
-
marcel (0.3.2)
|
72
|
-
mimemagic (~> 0.3.2)
|
73
|
-
method_source (0.9.0)
|
74
|
-
mimemagic (0.3.2)
|
75
|
-
mini_mime (1.0.0)
|
76
|
-
mini_portile2 (2.3.0)
|
77
|
-
minitest (5.11.3)
|
78
|
-
mongo (2.6.1)
|
79
|
-
bson (>= 4.3.0, < 5.0.0)
|
80
|
-
mongoid (7.0.1)
|
81
|
-
activemodel (>= 5.1, < 6.0.0)
|
82
|
-
mongo (>= 2.5.1, < 3.0.0)
|
83
|
-
nio4r (2.3.1)
|
84
|
-
nokogiri (1.8.4)
|
85
|
-
mini_portile2 (~> 2.3.0)
|
86
|
-
pry (0.11.3)
|
87
|
-
coderay (~> 1.1.0)
|
88
|
-
method_source (~> 0.9.0)
|
89
|
-
rack (2.0.5)
|
90
|
-
rack-test (1.1.0)
|
91
|
-
rack (>= 1.0, < 3)
|
92
|
-
rails (5.2.0)
|
93
|
-
actioncable (= 5.2.0)
|
94
|
-
actionmailer (= 5.2.0)
|
95
|
-
actionpack (= 5.2.0)
|
96
|
-
actionview (= 5.2.0)
|
97
|
-
activejob (= 5.2.0)
|
98
|
-
activemodel (= 5.2.0)
|
99
|
-
activerecord (= 5.2.0)
|
100
|
-
activestorage (= 5.2.0)
|
101
|
-
activesupport (= 5.2.0)
|
102
|
-
bundler (>= 1.3.0)
|
103
|
-
railties (= 5.2.0)
|
104
|
-
sprockets-rails (>= 2.0.0)
|
105
|
-
rails-dom-testing (2.0.3)
|
106
|
-
activesupport (>= 4.2.0)
|
107
|
-
nokogiri (>= 1.6)
|
108
|
-
rails-html-sanitizer (1.0.4)
|
109
|
-
loofah (~> 2.2, >= 2.2.2)
|
110
|
-
railties (5.2.0)
|
111
|
-
actionpack (= 5.2.0)
|
112
|
-
activesupport (= 5.2.0)
|
113
|
-
method_source
|
114
|
-
rake (>= 0.8.7)
|
115
|
-
thor (>= 0.18.1, < 2.0)
|
116
|
-
rake (12.3.1)
|
117
|
-
sprockets (3.7.2)
|
118
|
-
concurrent-ruby (~> 1.0)
|
119
|
-
rack (> 1, < 3)
|
120
|
-
sprockets-rails (3.2.1)
|
121
|
-
actionpack (>= 4.0)
|
122
|
-
activesupport (>= 4.0)
|
123
|
-
sprockets (>= 3.0.0)
|
124
|
-
thor (0.20.0)
|
125
|
-
thread_safe (0.3.6)
|
126
|
-
tzinfo (1.2.5)
|
127
|
-
thread_safe (~> 0.1)
|
128
|
-
websocket-driver (0.7.0)
|
129
|
-
websocket-extensions (>= 0.1.0)
|
130
|
-
websocket-extensions (0.1.3)
|
131
|
-
|
132
|
-
PLATFORMS
|
133
|
-
ruby
|
134
|
-
|
135
|
-
DEPENDENCIES
|
136
|
-
minitest
|
137
|
-
mongoid_rails_migrations!
|
138
|
-
pry
|
139
|
-
rake
|
140
|
-
|
141
|
-
BUNDLED WITH
|
142
|
-
1.13.7
|
data/README.rdoc
DELETED
@@ -1,56 +0,0 @@
|
|
1
|
-
== RELEASE NOTES
|
2
|
-
* The most current release, 1.1.x, targets Mongoid >= 4.0.0 and Rails >= 4.2.0 .
|
3
|
-
* For Rails >= 3.2.0 and Mongoid >= 3.0.0, use version 1.0.0 .
|
4
|
-
* For Rails >= 3.0.0 (but < 3.2.0) and Mongoid >= 2.0.0, use version 0.0.14 .
|
5
|
-
|
6
|
-
== SYNOPSIS
|
7
|
-
* Data migrations for Mongoid.
|
8
|
-
|
9
|
-
== MIGRATE WHEN ...
|
10
|
-
* The migrating is good
|
11
|
-
|
12
|
-
== INSTALL
|
13
|
-
* gem install mongoid_rails_migrations
|
14
|
-
* In your Gemfile, include (after including mongoid):
|
15
|
-
gem "mongoid_rails_migrations", <version>
|
16
|
-
|
17
|
-
== FEATURES AND HOW TO USE
|
18
|
-
* generator:
|
19
|
-
* rails generate mongoid:migration your_migration_name_here
|
20
|
-
|
21
|
-
* migrations:
|
22
|
-
* db:migrate
|
23
|
-
* db:migrate:down
|
24
|
-
* db:migrate:up
|
25
|
-
* db:rollback
|
26
|
-
* db:migrate:redo
|
27
|
-
* db:migrate:reset
|
28
|
-
* db:reseed (handled by mongoid)
|
29
|
-
* db:version
|
30
|
-
|
31
|
-
== TESTING
|
32
|
-
```rake test:mongoid:migrations```
|
33
|
-
|
34
|
-
== CREDITS TO
|
35
|
-
* rails
|
36
|
-
* mongoid
|
37
|
-
* contributions from the community (git log)
|
38
|
-
|
39
|
-
Much of this gem simply modifies existing code from both projects.
|
40
|
-
With that out of the way, on to the license.
|
41
|
-
|
42
|
-
== LICENSE (MIT)
|
43
|
-
|
44
|
-
Copyright © 2013: Alan Da Costa
|
45
|
-
|
46
|
-
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the 'Software'),
|
47
|
-
to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish,
|
48
|
-
distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to
|
49
|
-
the following conditions:
|
50
|
-
|
51
|
-
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
|
52
|
-
|
53
|
-
The software is provided 'as is', without warranty of any kind, express or implied, including but not limited to the warranties of
|
54
|
-
merchantability, fitness for a particular purpose and noninfringement. In no event shall the authors or copyright holders be liable for any
|
55
|
-
claim, damages or other liability, whether in an action of contract, tort or otherwise, arising from, out of or in connection with the
|
56
|
-
software or the use or other dealings in the software.
|
data/Rakefile
DELETED
@@ -1,13 +0,0 @@
|
|
1
|
-
$:.unshift(File.dirname(__FILE__))
|
2
|
-
require "bundler/gem_tasks"
|
3
|
-
|
4
|
-
task :default => ['test:mongoid:migrations']
|
5
|
-
|
6
|
-
namespace :test do
|
7
|
-
namespace :mongoid do
|
8
|
-
desc "Test mongoid rails migrations"
|
9
|
-
task :migrations do
|
10
|
-
load 'test/migration_test.rb'
|
11
|
-
end
|
12
|
-
end
|
13
|
-
end
|
data/test/config.rb
DELETED
@@ -1,9 +0,0 @@
|
|
1
|
-
require File.join(File.dirname(__FILE__), '..', 'lib', 'mongoid_rails_migrations')
|
2
|
-
require File.join(File.dirname(__FILE__), '..', 'lib', 'rails', 'generators', 'mongoid', 'mongoid_generator')
|
3
|
-
|
4
|
-
Mongoid.configure.connect_to('mongoid_test')
|
5
|
-
|
6
|
-
# require all models
|
7
|
-
Dir[File.join(File.dirname(__FILE__), 'models', '*.rb')].each { |file| require file }
|
8
|
-
|
9
|
-
MIGRATIONS_ROOT = File.join(File.dirname(__FILE__), 'migrations')
|
data/test/helper.rb
DELETED
@@ -1,34 +0,0 @@
|
|
1
|
-
$:.unshift(File.dirname(__FILE__))
|
2
|
-
|
3
|
-
require 'bundler/setup'
|
4
|
-
Bundler.require(:test)
|
5
|
-
|
6
|
-
require 'mongoid'
|
7
|
-
require 'config'
|
8
|
-
require 'minitest/autorun'
|
9
|
-
require 'rake'
|
10
|
-
require 'rake/testtask'
|
11
|
-
require 'rdoc/task'
|
12
|
-
|
13
|
-
# leave out active_record, in favor of a monogo adapter
|
14
|
-
%w(
|
15
|
-
action_controller
|
16
|
-
action_mailer
|
17
|
-
active_resource
|
18
|
-
rails/test_unit
|
19
|
-
mongoid
|
20
|
-
).each do |framework|
|
21
|
-
begin
|
22
|
-
require "#{framework}/railtie"
|
23
|
-
rescue LoadError
|
24
|
-
end
|
25
|
-
end
|
26
|
-
|
27
|
-
|
28
|
-
ActiveSupport.test_order = :sorted if ActiveSupport.respond_to?(:test_order)
|
29
|
-
|
30
|
-
module TestMongoidRailsMigrations
|
31
|
-
class Application < Rails::Application; end
|
32
|
-
end
|
33
|
-
|
34
|
-
TestMongoidRailsMigrations::Application.load_tasks
|
data/test/migration_test.rb
DELETED
@@ -1,165 +0,0 @@
|
|
1
|
-
require File.dirname(__FILE__) + '/helper'
|
2
|
-
|
3
|
-
class Mongoid::Migration
|
4
|
-
class <<self
|
5
|
-
attr_accessor :message_count
|
6
|
-
|
7
|
-
def puts(text="")
|
8
|
-
self.message_count ||= 0
|
9
|
-
self.message_count += 1
|
10
|
-
end
|
11
|
-
end
|
12
|
-
end
|
13
|
-
|
14
|
-
module Mongoid
|
15
|
-
class TestCase < ActiveSupport::TestCase #:nodoc:
|
16
|
-
|
17
|
-
def setup
|
18
|
-
Mongoid::Migration.verbose = true
|
19
|
-
Mongo::Logger.logger.level = 1
|
20
|
-
# same as db:drop command in lib/mongoid_rails_migrations/mongoid_ext/railties/database.rake
|
21
|
-
if Mongoid.respond_to?(:default_client)
|
22
|
-
Mongoid.default_client.database.drop
|
23
|
-
else
|
24
|
-
Mongoid.default_session.drop
|
25
|
-
end
|
26
|
-
end
|
27
|
-
|
28
|
-
def teardown; end
|
29
|
-
|
30
|
-
def test_drop_works
|
31
|
-
assert_equal 0, Mongoid::Migrator.current_version, "db:drop should take us down to version 0"
|
32
|
-
end
|
33
|
-
|
34
|
-
def test_migrations_path
|
35
|
-
assert_equal ["db/migrate"], Mongoid::Migrator.migrations_path
|
36
|
-
|
37
|
-
Mongoid::Migrator.migrations_path += ["engines/my_engine/db/migrate"]
|
38
|
-
|
39
|
-
assert_equal ["db/migrate", "engines/my_engine/db/migrate"], Mongoid::Migrator.migrations_path
|
40
|
-
end
|
41
|
-
|
42
|
-
def test_finds_migrations
|
43
|
-
assert Mongoid::Migrator.new(:up, MIGRATIONS_ROOT + "/valid").migrations.size == 2
|
44
|
-
assert_equal 2, Mongoid::Migrator.new(:up, MIGRATIONS_ROOT + "/valid").pending_migrations.size
|
45
|
-
end
|
46
|
-
|
47
|
-
def test_finds_migrations_in_multiple_paths
|
48
|
-
migration_paths = [MIGRATIONS_ROOT + "/valid", MIGRATIONS_ROOT + "/other_valid"]
|
49
|
-
|
50
|
-
assert Mongoid::Migrator.new(:up, migration_paths).migrations.size == 3
|
51
|
-
assert_equal 3, Mongoid::Migrator.new(:up, migration_paths).pending_migrations.size
|
52
|
-
end
|
53
|
-
|
54
|
-
def test_migrator_current_version
|
55
|
-
Mongoid::Migrator.migrate(MIGRATIONS_ROOT + "/valid", 20100513054656)
|
56
|
-
assert_equal(20100513054656, Mongoid::Migrator.current_version)
|
57
|
-
end
|
58
|
-
|
59
|
-
def test_migrator
|
60
|
-
assert SurveySchema.first.nil?, "All SurveySchemas should be clear before migration run"
|
61
|
-
|
62
|
-
Mongoid::Migrator.up(MIGRATIONS_ROOT + "/valid")
|
63
|
-
|
64
|
-
assert_equal 20100513063902, Mongoid::Migrator.current_version
|
65
|
-
assert !SurveySchema.first.nil?
|
66
|
-
|
67
|
-
Mongoid::Migrator.down(MIGRATIONS_ROOT + "/valid")
|
68
|
-
assert_equal 0, Mongoid::Migrator.current_version
|
69
|
-
|
70
|
-
assert SurveySchema.create(:label => 'Questionable Survey')
|
71
|
-
assert_equal 1, SurveySchema.all.size
|
72
|
-
end
|
73
|
-
|
74
|
-
def test_migrator_two_up_and_one_down
|
75
|
-
assert SurveySchema.where(:label => 'Baseline Survey').first.nil?
|
76
|
-
assert_equal 0, SurveySchema.all.size
|
77
|
-
|
78
|
-
Mongoid::Migrator.up(MIGRATIONS_ROOT + "/valid", 20100513054656)
|
79
|
-
|
80
|
-
assert !SurveySchema.where(:label => 'Baseline Survey').first.nil?
|
81
|
-
assert_equal 1, SurveySchema.all.size
|
82
|
-
|
83
|
-
assert SurveySchema.where(:label => 'Improvement Plan Survey').first.nil?
|
84
|
-
|
85
|
-
Mongoid::Migrator.up(MIGRATIONS_ROOT + "/valid", 20100513063902)
|
86
|
-
assert_equal 20100513063902, Mongoid::Migrator.current_version
|
87
|
-
|
88
|
-
assert !SurveySchema.where(:label => 'Improvement Plan Survey').first.nil?
|
89
|
-
assert_equal 2, SurveySchema.all.size
|
90
|
-
|
91
|
-
Mongoid::Migrator.down(MIGRATIONS_ROOT + "/valid", 20100513054656)
|
92
|
-
assert_equal 20100513054656, Mongoid::Migrator.current_version
|
93
|
-
|
94
|
-
assert SurveySchema.where(:label => 'Improvement Plan Survey').first.nil?
|
95
|
-
assert !SurveySchema.where(:label => 'Baseline Survey').first.nil?
|
96
|
-
assert_equal 1, SurveySchema.all.size
|
97
|
-
end
|
98
|
-
|
99
|
-
def test_finds_pending_migrations
|
100
|
-
Mongoid::Migrator.up(MIGRATIONS_ROOT + "/valid", 20100513054656)
|
101
|
-
pending_migrations = Mongoid::Migrator.new(:up, MIGRATIONS_ROOT + "/valid").pending_migrations
|
102
|
-
|
103
|
-
assert_equal 1, pending_migrations.size
|
104
|
-
assert_equal pending_migrations[0].version, 20100513063902
|
105
|
-
assert_equal pending_migrations[0].name, 'AddImprovementPlanSurveySchema'
|
106
|
-
end
|
107
|
-
|
108
|
-
def test_migrator_rollback
|
109
|
-
Mongoid::Migrator.migrate(MIGRATIONS_ROOT + "/valid")
|
110
|
-
assert_equal(20100513063902, Mongoid::Migrator.current_version)
|
111
|
-
|
112
|
-
Mongoid::Migrator.rollback(MIGRATIONS_ROOT + "/valid")
|
113
|
-
assert_equal(20100513054656, Mongoid::Migrator.current_version)
|
114
|
-
|
115
|
-
Mongoid::Migrator.rollback(MIGRATIONS_ROOT + "/valid")
|
116
|
-
assert_equal(0, Mongoid::Migrator.current_version)
|
117
|
-
end
|
118
|
-
|
119
|
-
def test_migrator_forward
|
120
|
-
Mongoid::Migrator.migrate(MIGRATIONS_ROOT + "/valid", 20100513054656)
|
121
|
-
assert_equal(20100513054656, Mongoid::Migrator.current_version)
|
122
|
-
|
123
|
-
Mongoid::Migrator.forward(MIGRATIONS_ROOT + "/valid", 20100513063902)
|
124
|
-
assert_equal(20100513063902, Mongoid::Migrator.current_version)
|
125
|
-
end
|
126
|
-
|
127
|
-
def test_migrator_with_duplicate_names
|
128
|
-
assert_raise(Mongoid::DuplicateMigrationNameError) do
|
129
|
-
Mongoid::Migrator.migrate(MIGRATIONS_ROOT + "/duplicate/names", nil)
|
130
|
-
end
|
131
|
-
end
|
132
|
-
|
133
|
-
def test_migrator_with_duplicate_versions
|
134
|
-
assert_raise(Mongoid::DuplicateMigrationVersionError) do
|
135
|
-
Mongoid::Migrator.migrate(MIGRATIONS_ROOT + "/duplicate/versions", nil)
|
136
|
-
end
|
137
|
-
end
|
138
|
-
|
139
|
-
def test_migrator_with_missing_version_numbers
|
140
|
-
assert_raise(Mongoid::UnknownMigrationVersionError) do
|
141
|
-
Mongoid::Migrator.migrate(MIGRATIONS_ROOT + "/valid", 500)
|
142
|
-
end
|
143
|
-
end
|
144
|
-
|
145
|
-
def test_default_state_of_timestamped_migrations
|
146
|
-
assert Mongoid.configure.timestamped_migrations, "Mongoid.configure.timestamped_migrations should default to true"
|
147
|
-
end
|
148
|
-
|
149
|
-
def test_timestamped_migrations_generates_non_sequential_next_number
|
150
|
-
next_number = Mongoid::Generators::Base.next_migration_number(MIGRATIONS_ROOT + "/valid")
|
151
|
-
assert_not_equal "20100513063903", next_number
|
152
|
-
end
|
153
|
-
|
154
|
-
def test_turning_off_timestamped_migrations
|
155
|
-
Mongoid.configure.timestamped_migrations = false
|
156
|
-
next_number = Mongoid::Generators::Base.next_migration_number(MIGRATIONS_ROOT + "/valid")
|
157
|
-
assert_equal "20100513063903", next_number
|
158
|
-
end
|
159
|
-
|
160
|
-
def test_migration_returns_connection_without_error
|
161
|
-
Mongoid::Migration.connection
|
162
|
-
end
|
163
|
-
|
164
|
-
end
|
165
|
-
end
|