data_migrate 3.5.0 → 4.0.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.
Files changed (48) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +1 -0
  3. data/.ruby-style.yml +2 -0
  4. data/.travis.yml +1 -1
  5. data/Appraisals +5 -5
  6. data/Changelog.md +6 -0
  7. data/Gemfile.rails5.2 +5 -0
  8. data/README.md +4 -10
  9. data/data_migrate.gemspec +1 -1
  10. data/gemfiles/rails_5.2.gemfile +7 -0
  11. data/lib/data_migrate.rb +19 -4
  12. data/lib/data_migrate/data_migrator.rb +5 -0
  13. data/lib/data_migrate/data_migrator_five.rb +84 -0
  14. data/lib/data_migrate/data_schema.rb +29 -9
  15. data/lib/data_migrate/data_schema_migration.rb +1 -0
  16. data/lib/data_migrate/database_tasks.rb +69 -0
  17. data/lib/data_migrate/migration.rb +1 -1
  18. data/lib/data_migrate/migration_context.rb +90 -0
  19. data/lib/data_migrate/schema_dumper.rb +1 -3
  20. data/lib/data_migrate/schema_migration.rb +31 -0
  21. data/lib/data_migrate/schema_migration_five.rb +31 -0
  22. data/lib/data_migrate/status_service.rb +1 -1
  23. data/lib/data_migrate/status_service_five.rb +48 -0
  24. data/lib/data_migrate/tasks/data_migrate_tasks.rb +25 -0
  25. data/lib/data_migrate/version.rb +1 -1
  26. data/lib/generators/data_migration/data_migration_generator.rb +3 -1
  27. data/spec/data_migrate/data_migrator_spec.rb +1 -13
  28. data/spec/data_migrate/{data_schema_spec.rb → data_spec.rb} +7 -5
  29. data/spec/data_migrate/database_tasks_spec.rb +96 -0
  30. data/spec/data_migrate/migration_context_spec.rb +107 -0
  31. data/spec/data_migrate/schema_dumper_spec.rb +5 -3
  32. data/spec/data_migrate/schema_migration_spec.rb +69 -0
  33. data/spec/data_migrate/status_service_spec.rb +15 -18
  34. data/spec/data_migrate/tasks/data_migrate_tasks_spec.rb +50 -0
  35. data/spec/db/4.2/20091231235959_some_name.rb +9 -0
  36. data/spec/db/4.2/20171231235959_super_update.rb +9 -0
  37. data/spec/db/5.0/20091231235959_some_name.rb +9 -0
  38. data/spec/db/5.0/20171231235959_super_update.rb +9 -0
  39. data/spec/db/data/20091231235959_some_name.rb +9 -0
  40. data/spec/db/data/20171231235959_super_update.rb +9 -0
  41. data/spec/db/migrate/4.2/20131111111111_late_migration.rb +9 -0
  42. data/spec/db/migrate/4.2/20202020202011_db_migration.rb +9 -0
  43. data/spec/db/migrate/5.0/20131111111111_late_migration.rb +9 -0
  44. data/spec/db/migrate/5.0/20202020202011_db_migration.rb +9 -0
  45. data/spec/db/migrate/5.2/20131111111111_late_migration.rb +9 -0
  46. data/spec/db/migrate/5.2/20202020202011_db_migration.rb +9 -0
  47. data/spec/spec_helper.rb +4 -0
  48. metadata +41 -7
@@ -1,5 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require "spec_helper"
4
+
3
5
  describe DataMigrate::SchemaDumper do
4
6
  let(:subject) { DataMigrate::SchemaDumper }
5
7
  let(:db_config) do
@@ -14,15 +16,15 @@ describe DataMigrate::SchemaDumper do
14
16
 
15
17
  describe :dump do
16
18
  before do
17
- expect(DataMigrate::DataMigrator).
19
+ allow(DataMigrate::DataMigrator).
18
20
  to receive(:db_config) { db_config }.at_least(:once)
19
21
  ActiveRecord::Base.establish_connection(db_config)
20
22
 
21
- ActiveRecord::Base.connection.initialize_schema_migrations_table
23
+ ActiveRecord::SchemaMigration.create_table
22
24
  DataMigrate::DataMigrator.assure_data_schema_table
23
25
 
24
26
  ActiveRecord::Base.connection.execute <<-SQL
25
- INSERT INTO #{DataMigrate::DataMigrator.schema_migrations_table_name}
27
+ INSERT INTO #{DataMigrate::DataSchemaMigration.table_name}
26
28
  VALUES #{fixture_file_timestamps.map { |t| "(#{t})" }.join(', ')}
27
29
  SQL
28
30
  end
@@ -0,0 +1,69 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "spec_helper"
4
+
5
+ describe DataMigrate::SchemaMigration do
6
+ let(:migration_path) {
7
+ if Rails::VERSION::MAJOR == 5
8
+ if Rails::VERSION::MINOR == 2
9
+ "spec/db/migrate/5.2"
10
+ else
11
+ "spec/db/migrate/5.0"
12
+ end
13
+ else
14
+ "spec/db/migrate/4.2"
15
+ end
16
+ }
17
+
18
+ let(:subject) { DataMigrate::SchemaMigration }
19
+ let(:db_config) do
20
+ {
21
+ adapter: "sqlite3",
22
+ database: "spec/db/test.db"
23
+ }
24
+ end
25
+ let(:fixture_file_timestamps) do
26
+ %w[20091231235959 20101231235959 20111231235959]
27
+ end
28
+
29
+ before do
30
+ ActiveRecord::Base.establish_connection(db_config)
31
+ ActiveRecord::SchemaMigration.create_table
32
+ end
33
+
34
+ after do
35
+ ActiveRecord::Migration.drop_table("schema_migrations")
36
+ end
37
+
38
+ describe :pending_schema_migrations do
39
+ it "list sorted schema migrations" do
40
+ expect(subject).to receive(:migrations_paths) {
41
+ migration_path
42
+ }
43
+ migrations = subject.pending_schema_migrations
44
+
45
+ expect(migrations.count).to eq 2
46
+ expect(migrations[0][:version]).to eq(20131111111111)
47
+ expect(migrations[1][:version]).to eq(20202020202011)
48
+ end
49
+ end
50
+
51
+ describe :run do
52
+ it do
53
+ expect {
54
+ subject.run(:up, migration_path, 20202020202011)
55
+ }.to output(/20202020202011 DbMigration: migrating/).to_stdout
56
+ versions = ActiveRecord::SchemaMigration.normalized_versions
57
+ expect(versions.first).to eq("20202020202011")
58
+ end
59
+
60
+ it "undo migration" do
61
+ subject.run(:up, migration_path, 20202020202011)
62
+ expect {
63
+ subject.run(:down, migration_path, 20202020202011)
64
+ }.to output(/Undoing DbMigration/).to_stdout
65
+ versions = ActiveRecord::SchemaMigration.normalized_versions
66
+ expect(versions.count).to eq(0)
67
+ end
68
+ end
69
+ end
@@ -1,5 +1,4 @@
1
1
  # frozen_string_literal: true
2
-
3
2
  require "spec_helper"
4
3
 
5
4
  describe DataMigrate::StatusService do
@@ -12,44 +11,42 @@ describe DataMigrate::StatusService do
12
11
  end
13
12
  let(:service) { DataMigrate::StatusService }
14
13
 
15
- describe :dump do
14
+ context "table does not exists" do
16
15
  before do
17
16
  ActiveRecord::Base.establish_connection(db_config)
18
17
  end
19
18
 
20
- describe "table does not exist" do
21
- it "table doesn't exist" do
22
- expect_any_instance_of(service).to receive(:table_name) { "bogus"}
23
- stream = StringIO.new
24
- service.dump(ActiveRecord::Base.connection, stream)
25
- stream.rewind
19
+ it "show error message" do
20
+ allow_any_instance_of(service).to receive(:table_name) { "bogus"}
21
+ stream = StringIO.new
22
+
23
+ service.dump(ActiveRecord::Base.connection, stream)
26
24
 
27
- expected = "Data migrations table does not exist"
28
- expect(stream.read).to include expected
29
- end
25
+ stream.rewind
26
+ expected = "Data migrations table does not exist"
27
+ expect(stream.read).to include expected
30
28
  end
31
29
  end
32
30
 
33
- describe :dump do
34
- context "table exists"
31
+ context "table exists" do
35
32
  let(:fixture_file_timestamps) do
36
33
  %w[20091231235959 20101231235959 20111231235959]
37
34
  end
38
35
 
39
36
  before do
40
- expect(DataMigrate::DataMigrator).
37
+ allow(DataMigrate::DataMigrator).
41
38
  to receive(:db_config) { db_config }.at_least(:once)
42
39
  ActiveRecord::Base.establish_connection(db_config)
43
40
 
44
- ActiveRecord::Base.connection.initialize_schema_migrations_table
41
+ ActiveRecord::SchemaMigration.create_table
45
42
  DataMigrate::DataMigrator.assure_data_schema_table
46
43
 
47
44
  ActiveRecord::Base.connection.execute <<-SQL
48
- INSERT INTO #{DataMigrate::DataMigrator.schema_migrations_table_name}
45
+ INSERT INTO #{DataMigrate::DataSchemaMigration.table_name}
49
46
  VALUES #{fixture_file_timestamps.map { |t| "(#{t})" }.join(', ')}
50
47
  SQL
51
48
 
52
- expect_any_instance_of(service).to receive(:root_folder) { "spec" }
49
+ allow_any_instance_of(service).to receive(:root_folder) { "spec" }
53
50
  end
54
51
 
55
52
  after do
@@ -70,7 +67,7 @@ describe DataMigrate::StatusService do
70
67
  service.dump(ActiveRecord::Base.connection, stream)
71
68
  stream.rewind
72
69
 
73
- expected = " up 20101231235959 *** NO FILE ***"
70
+ expected = " up 20101231235959 ********** NO FILE **********"
74
71
  s = stream.read
75
72
  expect(s).to include expected
76
73
  end
@@ -0,0 +1,50 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "spec_helper"
4
+
5
+ describe DataMigrate::Tasks::DataMigrateTasks do
6
+ let(:db_config) do
7
+ {
8
+ adapter: "sqlite3",
9
+ database: "spec/db/test.db"
10
+ }
11
+ end
12
+
13
+ before do
14
+ if Rails::VERSION::MAJOR == 5
15
+ if Rails::VERSION::MINOR == 2
16
+ allow(DataMigrate::Tasks::DataMigrateTasks).to receive(:migrations_paths) {
17
+ "spec/db/data"
18
+ }
19
+ else
20
+ allow(DataMigrate::Tasks::DataMigrateTasks).to receive(:migrations_paths) {
21
+ "spec/db/5.0"
22
+ }
23
+ end
24
+ else
25
+ allow(DataMigrate::Tasks::DataMigrateTasks).to receive(:migrations_paths) {
26
+ "spec/db/4.2"
27
+ }
28
+ end
29
+ allow(DataMigrate::DataMigrator).to receive(:db_config) { db_config }
30
+ ActiveRecord::Base.establish_connection(db_config)
31
+ end
32
+
33
+ after do
34
+ ActiveRecord::Migration.drop_table("data_migrations")
35
+ end
36
+
37
+ describe :migrate do
38
+ it do
39
+ expect {
40
+ DataMigrate::Tasks::DataMigrateTasks.migrate
41
+ }.to output(/20091231235959 SomeName: migrating/).to_stdout
42
+ end
43
+
44
+ it do
45
+ expect {
46
+ DataMigrate::Tasks::DataMigrateTasks.migrate
47
+ }.to output(/20171231235959 SuperUpdate: migrating/).to_stdout
48
+ end
49
+ end
50
+ end
@@ -0,0 +1,9 @@
1
+ class SomeName < ActiveRecord::Migration
2
+ def up
3
+ puts "Doing data migration"
4
+ end
5
+
6
+ def down
7
+ raise ActiveRecord::IrreversibleMigration
8
+ end
9
+ end
@@ -0,0 +1,9 @@
1
+ class SuperUpdate < ActiveRecord::Migration
2
+ def up
3
+ puts "Doing data migration"
4
+ end
5
+
6
+ def down
7
+ raise ActiveRecord::IrreversibleMigration
8
+ end
9
+ end
@@ -0,0 +1,9 @@
1
+ class SomeName < ActiveRecord::Migration[5.0]
2
+ def up
3
+ puts "Doing data migration"
4
+ end
5
+
6
+ def down
7
+ raise ActiveRecord::IrreversibleMigration
8
+ end
9
+ end
@@ -0,0 +1,9 @@
1
+ class SuperUpdate < ActiveRecord::Migration[5.0]
2
+ def up
3
+ puts "Doing data migration"
4
+ end
5
+
6
+ def down
7
+ raise ActiveRecord::IrreversibleMigration
8
+ end
9
+ end
@@ -0,0 +1,9 @@
1
+ class SomeName < ActiveRecord::Migration[5.2]
2
+ def up
3
+ puts "Doing data migration"
4
+ end
5
+
6
+ def down
7
+ puts "Undoing SomeName"
8
+ end
9
+ end
@@ -0,0 +1,9 @@
1
+ class SuperUpdate < ActiveRecord::Migration[5.2]
2
+ def up
3
+ puts "Doing SuperUpdate"
4
+ end
5
+
6
+ def down
7
+ puts "Undoing SuperUpdate"
8
+ end
9
+ end
@@ -0,0 +1,9 @@
1
+ class LateMigration < ActiveRecord::Migration
2
+ def up
3
+ puts "Doing schema LateMigration"
4
+ end
5
+
6
+ def down
7
+ puts "Undoing LateMigration"
8
+ end
9
+ end
@@ -0,0 +1,9 @@
1
+ class DbMigration < ActiveRecord::Migration
2
+ def up
3
+ puts "Doing schema migration"
4
+ end
5
+
6
+ def down
7
+ puts "Undoing DbMigration"
8
+ end
9
+ end
@@ -0,0 +1,9 @@
1
+ class LateMigration < ActiveRecord::Migration[5.0]
2
+ def up
3
+ puts "Doing schema LateMigration"
4
+ end
5
+
6
+ def down
7
+ puts "Undoing LateMigration"
8
+ end
9
+ end
@@ -0,0 +1,9 @@
1
+ class DbMigration < ActiveRecord::Migration[5.0]
2
+ def up
3
+ puts "Doing schema migration"
4
+ end
5
+
6
+ def down
7
+ puts "Undoing DbMigration"
8
+ end
9
+ end
@@ -0,0 +1,9 @@
1
+ class LateMigration < ActiveRecord::Migration[5.2]
2
+ def up
3
+ puts "Doing schema LateMigration"
4
+ end
5
+
6
+ def down
7
+ puts "Undoing LateMigration"
8
+ end
9
+ end
@@ -0,0 +1,9 @@
1
+ class DbMigration < ActiveRecord::Migration[5.2]
2
+ def up
3
+ puts "Doing schema migration"
4
+ end
5
+
6
+ def down
7
+ puts "Undoing DbMigration"
8
+ end
9
+ end
data/spec/spec_helper.rb CHANGED
@@ -3,3 +3,7 @@ require 'rails'
3
3
  require 'data_migrate'
4
4
  require 'pry'
5
5
  require 'timecop'
6
+
7
+ if Rails::VERSION::MAJOR == 5 && Rails::VERSION::MINOR == 2
8
+ DataMigrate::DataMigrator.migrations_paths = ["spec/db/data"]
9
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: data_migrate
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.5.0
4
+ version: 4.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Andrew J Vargo
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2018-03-08 00:00:00.000000000 Z
12
+ date: 2018-05-03 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rails
@@ -17,14 +17,14 @@ dependencies:
17
17
  requirements:
18
18
  - - ">="
19
19
  - !ruby/object:Gem::Version
20
- version: '4.1'
20
+ version: '4.2'
21
21
  type: :runtime
22
22
  prerelease: false
23
23
  version_requirements: !ruby/object:Gem::Requirement
24
24
  requirements:
25
25
  - - ">="
26
26
  - !ruby/object:Gem::Version
27
- version: '4.1'
27
+ version: '4.2'
28
28
  - !ruby/object:Gem::Dependency
29
29
  name: appraisal
30
30
  requirement: !ruby/object:Gem::Requirement
@@ -185,6 +185,7 @@ files:
185
185
  - Gemfile
186
186
  - Gemfile.rails5
187
187
  - Gemfile.rails5.1
188
+ - Gemfile.rails5.2
188
189
  - LICENSE
189
190
  - README.md
190
191
  - Rakefile
@@ -193,18 +194,25 @@ files:
193
194
  - gemfiles/rails_4.2.gemfile
194
195
  - gemfiles/rails_5.0.gemfile
195
196
  - gemfiles/rails_5.1.gemfile
197
+ - gemfiles/rails_5.2.gemfile
196
198
  - lib/capistrano/data_migrate.rb
197
199
  - lib/capistrano/data_migrate/migrate.rb
198
200
  - lib/data_migrate.rb
199
201
  - lib/data_migrate/data_migrator.rb
202
+ - lib/data_migrate/data_migrator_five.rb
200
203
  - lib/data_migrate/data_schema.rb
201
204
  - lib/data_migrate/data_schema_migration.rb
202
205
  - lib/data_migrate/database_tasks.rb
203
206
  - lib/data_migrate/migration.rb
207
+ - lib/data_migrate/migration_context.rb
204
208
  - lib/data_migrate/migration_five.rb
205
209
  - lib/data_migrate/railtie.rb
206
210
  - lib/data_migrate/schema_dumper.rb
211
+ - lib/data_migrate/schema_migration.rb
212
+ - lib/data_migrate/schema_migration_five.rb
207
213
  - lib/data_migrate/status_service.rb
214
+ - lib/data_migrate/status_service_five.rb
215
+ - lib/data_migrate/tasks/data_migrate_tasks.rb
208
216
  - lib/data_migrate/version.rb
209
217
  - lib/generators/data_migrate.rb
210
218
  - lib/generators/data_migration/data_migration_generator.rb
@@ -213,13 +221,26 @@ files:
213
221
  - screenshot.png
214
222
  - spec/data_migrate/data_migrator_spec.rb
215
223
  - spec/data_migrate/data_schema_migration_spec.rb
216
- - spec/data_migrate/data_schema_spec.rb
224
+ - spec/data_migrate/data_spec.rb
217
225
  - spec/data_migrate/database_tasks_spec.rb
218
226
  - spec/data_migrate/migration.rb
227
+ - spec/data_migrate/migration_context_spec.rb
219
228
  - spec/data_migrate/schema_dumper_spec.rb
229
+ - spec/data_migrate/schema_migration_spec.rb
220
230
  - spec/data_migrate/status_service_spec.rb
231
+ - spec/data_migrate/tasks/data_migrate_tasks_spec.rb
232
+ - spec/db/4.2/20091231235959_some_name.rb
233
+ - spec/db/4.2/20171231235959_super_update.rb
234
+ - spec/db/5.0/20091231235959_some_name.rb
235
+ - spec/db/5.0/20171231235959_super_update.rb
221
236
  - spec/db/data/20091231235959_some_name.rb
222
237
  - spec/db/data/20171231235959_super_update.rb
238
+ - spec/db/migrate/4.2/20131111111111_late_migration.rb
239
+ - spec/db/migrate/4.2/20202020202011_db_migration.rb
240
+ - spec/db/migrate/5.0/20131111111111_late_migration.rb
241
+ - spec/db/migrate/5.0/20202020202011_db_migration.rb
242
+ - spec/db/migrate/5.2/20131111111111_late_migration.rb
243
+ - spec/db/migrate/5.2/20202020202011_db_migration.rb
223
244
  - spec/generators/data_migration/data_migration_generator_spec.rb
224
245
  - spec/spec_helper.rb
225
246
  - tasks/.gitkeep
@@ -247,19 +268,32 @@ required_rubygems_version: !ruby/object:Gem::Requirement
247
268
  version: '0'
248
269
  requirements: []
249
270
  rubyforge_project: data_migrate
250
- rubygems_version: 2.5.2
271
+ rubygems_version: 2.6.13
251
272
  signing_key:
252
273
  specification_version: 4
253
274
  summary: Rake tasks to migrate data alongside schema changes.
254
275
  test_files:
255
276
  - spec/data_migrate/data_migrator_spec.rb
256
277
  - spec/data_migrate/data_schema_migration_spec.rb
257
- - spec/data_migrate/data_schema_spec.rb
278
+ - spec/data_migrate/data_spec.rb
258
279
  - spec/data_migrate/database_tasks_spec.rb
259
280
  - spec/data_migrate/migration.rb
281
+ - spec/data_migrate/migration_context_spec.rb
260
282
  - spec/data_migrate/schema_dumper_spec.rb
283
+ - spec/data_migrate/schema_migration_spec.rb
261
284
  - spec/data_migrate/status_service_spec.rb
285
+ - spec/data_migrate/tasks/data_migrate_tasks_spec.rb
286
+ - spec/db/4.2/20091231235959_some_name.rb
287
+ - spec/db/4.2/20171231235959_super_update.rb
288
+ - spec/db/5.0/20091231235959_some_name.rb
289
+ - spec/db/5.0/20171231235959_super_update.rb
262
290
  - spec/db/data/20091231235959_some_name.rb
263
291
  - spec/db/data/20171231235959_super_update.rb
292
+ - spec/db/migrate/4.2/20131111111111_late_migration.rb
293
+ - spec/db/migrate/4.2/20202020202011_db_migration.rb
294
+ - spec/db/migrate/5.0/20131111111111_late_migration.rb
295
+ - spec/db/migrate/5.0/20202020202011_db_migration.rb
296
+ - spec/db/migrate/5.2/20131111111111_late_migration.rb
297
+ - spec/db/migrate/5.2/20202020202011_db_migration.rb
264
298
  - spec/generators/data_migration/data_migration_generator_spec.rb
265
299
  - spec/spec_helper.rb