data_migrate 3.0.1 → 4.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (66) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +6 -1
  3. data/.hound.yml +4 -0
  4. data/.overcommit.yml +21 -0
  5. data/.rspec +3 -0
  6. data/.rubocop.yml +2 -0
  7. data/.ruby-style.yml +1061 -0
  8. data/.travis.yml +16 -0
  9. data/Appraisals +17 -0
  10. data/Changelog.md +35 -0
  11. data/Gemfile.rails5 +5 -0
  12. data/Gemfile.rails5.1 +5 -0
  13. data/Gemfile.rails5.2 +5 -0
  14. data/README.md +58 -41
  15. data/data_migrate.gemspec +12 -1
  16. data/gemfiles/rails_4.1.gemfile +7 -0
  17. data/gemfiles/rails_4.2.gemfile +8 -0
  18. data/gemfiles/rails_5.0.gemfile +7 -0
  19. data/gemfiles/rails_5.1.gemfile +7 -0
  20. data/gemfiles/rails_5.2.gemfile +7 -0
  21. data/lib/data_migrate/data_migrator.rb +53 -8
  22. data/lib/data_migrate/data_migrator_five.rb +84 -0
  23. data/lib/data_migrate/data_schema.rb +63 -0
  24. data/lib/data_migrate/data_schema_migration.rb +1 -0
  25. data/lib/data_migrate/database_tasks.rb +82 -0
  26. data/lib/data_migrate/migration.rb +1 -1
  27. data/lib/data_migrate/migration_context.rb +90 -0
  28. data/lib/data_migrate/migration_five.rb +26 -0
  29. data/lib/data_migrate/railtie.rb +1 -1
  30. data/lib/data_migrate/schema_dumper.rb +42 -0
  31. data/lib/data_migrate/schema_migration.rb +31 -0
  32. data/lib/data_migrate/schema_migration_five.rb +31 -0
  33. data/lib/data_migrate/status_service.rb +65 -0
  34. data/lib/data_migrate/status_service_five.rb +48 -0
  35. data/lib/data_migrate/tasks/data_migrate_tasks.rb +25 -0
  36. data/lib/data_migrate/version.rb +1 -1
  37. data/lib/data_migrate.rb +30 -4
  38. data/lib/generators/data_migration/data_migration_generator.rb +17 -16
  39. data/lib/generators/data_migration/templates/data_migration.rb +4 -4
  40. data/screenshot.png +0 -0
  41. data/spec/data_migrate/data_migrator_spec.rb +50 -0
  42. data/spec/data_migrate/data_schema_migration_spec.rb +16 -0
  43. data/spec/data_migrate/data_spec.rb +87 -0
  44. data/spec/data_migrate/database_tasks_spec.rb +114 -0
  45. data/spec/data_migrate/migration.rb +19 -0
  46. data/spec/data_migrate/migration_context_spec.rb +107 -0
  47. data/spec/data_migrate/schema_dumper_spec.rb +46 -0
  48. data/spec/data_migrate/schema_migration_spec.rb +69 -0
  49. data/spec/data_migrate/status_service_spec.rb +93 -0
  50. data/spec/data_migrate/tasks/data_migrate_tasks_spec.rb +50 -0
  51. data/spec/db/4.2/20091231235959_some_name.rb +9 -0
  52. data/spec/db/4.2/20171231235959_super_update.rb +9 -0
  53. data/spec/db/5.0/20091231235959_some_name.rb +9 -0
  54. data/spec/db/5.0/20171231235959_super_update.rb +9 -0
  55. data/spec/db/data/20091231235959_some_name.rb +9 -0
  56. data/spec/db/data/20171231235959_super_update.rb +9 -0
  57. data/spec/db/migrate/4.2/20131111111111_late_migration.rb +9 -0
  58. data/spec/db/migrate/4.2/20202020202011_db_migration.rb +9 -0
  59. data/spec/db/migrate/5.0/20131111111111_late_migration.rb +9 -0
  60. data/spec/db/migrate/5.0/20202020202011_db_migration.rb +9 -0
  61. data/spec/db/migrate/5.2/20131111111111_late_migration.rb +9 -0
  62. data/spec/db/migrate/5.2/20202020202011_db_migration.rb +9 -0
  63. data/spec/generators/data_migration/data_migration_generator_spec.rb +27 -0
  64. data/spec/spec_helper.rb +9 -0
  65. data/tasks/databases.rake +69 -62
  66. metadata +221 -6
@@ -0,0 +1,87 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "spec_helper"
4
+
5
+ describe DataMigrate::Data do
6
+ let(:subject) { DataMigrate::Data }
7
+ let(:db_config) do
8
+ {
9
+ adapter: "sqlite3",
10
+ database: "spec/db/test.db"
11
+ }
12
+ end
13
+ let(:fixture_file_timestamps) do
14
+ %w[20091231235959 20101231235959 20111231235959]
15
+ end
16
+
17
+ around do |example|
18
+ Dir.mktmpdir do |temp_dir|
19
+ @temp_dir = temp_dir
20
+
21
+ # create the fake data migration files
22
+ fixture_file_timestamps.each do |timestamp|
23
+ FileUtils.touch File.join(temp_dir, "#{timestamp}_data_migration.rb")
24
+ end
25
+
26
+ example.run
27
+ end
28
+ end
29
+
30
+ describe :define do
31
+ before do
32
+ allow(DataMigrate::DataMigrator).
33
+ to receive(:db_config) { db_config }
34
+ ActiveRecord::Base.establish_connection(db_config)
35
+ ActiveRecord::SchemaMigration.create_table
36
+ end
37
+
38
+ after do
39
+ ActiveRecord::Migration.drop_table("data_migrations")
40
+ end
41
+
42
+ context "when no version is supplied" do
43
+ it "returns nil" do
44
+ expect(subject.define(version: nil)).to be_nil
45
+ end
46
+ end
47
+
48
+ context "when a version is supplied" do
49
+ before do
50
+ allow(DataMigrate::DataMigrator).
51
+ to receive(:full_migrations_path).and_return(@temp_dir)
52
+ end
53
+
54
+ it "sets the current version to the supplied version" do
55
+ version = fixture_file_timestamps[1]
56
+
57
+ expect(DataMigrate::DataMigrator.current_version).not_to eq version.to_i
58
+ subject.define(version: version)
59
+ expect(DataMigrate::DataMigrator.current_version).to eq version.to_i
60
+ end
61
+
62
+ it "creates entries for migration versions that come " \
63
+ "before the supplied version" do
64
+
65
+ version = fixture_file_timestamps[1]
66
+
67
+ subject.define(version: version)
68
+
69
+ sql_select = <<-SQL
70
+ SELECT version
71
+ FROM #{DataMigrate::DataSchemaMigration.table_name}
72
+ SQL
73
+
74
+ db_list_data = ActiveRecord::Base.connection.
75
+ select_values(sql_select).map(&:to_i)
76
+ expect(db_list_data).to match_array(
77
+ [fixture_file_timestamps[0], fixture_file_timestamps[1]].map(&:to_i)
78
+ )
79
+
80
+ # The last remaining migration (fixture_file_timestamps[2]) was
81
+ # not included as part of the supplied version and so should not
82
+ # appear in the data_migrations table.
83
+ expect(db_list_data).not_to include(fixture_file_timestamps[2])
84
+ end
85
+ end
86
+ end
87
+ end
@@ -0,0 +1,114 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "spec_helper"
4
+
5
+ describe DataMigrate::DatabaseTasks do
6
+ let(:subject) { DataMigrate::DatabaseTasks }
7
+ let(:migration_path) {
8
+ if Rails::VERSION::MAJOR == 5
9
+ if Rails::VERSION::MINOR == 2
10
+ "spec/db/migrate/5.2"
11
+ else
12
+ "spec/db/migrate/5.0"
13
+ end
14
+ else
15
+ "spec/db/migrate/4.2"
16
+ end
17
+ }
18
+ let(:data_migrations_path) {
19
+ if Rails::VERSION::MAJOR == 5
20
+ if Rails::VERSION::MINOR == 2
21
+ "spec/db/data"
22
+ else
23
+ "spec/db/5.0"
24
+ end
25
+ else
26
+ "spec/db/4.2"
27
+ end
28
+ }
29
+ let(:db_config) do
30
+ {
31
+ adapter: "sqlite3",
32
+ database: "spec/db/test.db"
33
+ }
34
+ end
35
+
36
+ before do
37
+ # In a normal Rails installation, db_dir would defer to
38
+ # Rails.application.config.paths["db"].first
39
+ # @see https://github.com/rails/rails/blob/a7d49ef78c36df2d1ca876451f30915ada1079a5/activerecord/lib/active_record/tasks/database_tasks.rb#L54
40
+ allow(subject).to receive(:db_dir).and_return("db")
41
+ end
42
+
43
+ before do
44
+ allow(DataMigrate::Tasks::DataMigrateTasks).to receive(:migrations_paths) {
45
+ data_migrations_path
46
+ }
47
+ allow(DataMigrate::DataMigrator).to receive(:db_config) { db_config }
48
+ ActiveRecord::Base.establish_connection(db_config)
49
+ end
50
+
51
+ describe :data_schema_file do
52
+ it "returns the correct data schema file path" do
53
+ expect(subject.data_schema_file).to eq "db/data_schema.rb"
54
+ end
55
+ end
56
+
57
+ context "migrations" do
58
+ after do
59
+ begin
60
+ ActiveRecord::Migration.drop_table("data_migrations")
61
+ rescue ActiveRecord::StatementInvalid
62
+ end
63
+ ActiveRecord::Migration.drop_table("schema_migrations")
64
+ end
65
+
66
+ before do
67
+ ActiveRecord::Base.establish_connection(db_config)
68
+ ActiveRecord::SchemaMigration.create_table
69
+
70
+ allow(DataMigrate::SchemaMigration).to receive(:migrations_paths) {
71
+ migration_path
72
+ }
73
+ allow(DataMigrate::DatabaseTasks).to receive(:data_migrations_path) {
74
+ data_migrations_path
75
+ }.at_least(:once)
76
+ allow(DataMigrate::DatabaseTasks).to receive(:schema_migrations_path) {
77
+ migration_path
78
+ }.at_least(:once)
79
+ end
80
+
81
+ describe :past_migrations do
82
+ it do
83
+ subject.forward
84
+ m = subject.past_migrations
85
+ expect(m.count).to eq 1
86
+ expect(m.first[:version]).to eq 20091231235959
87
+ end
88
+
89
+ it "shows nothing without any migrations" do
90
+ m = subject.past_migrations
91
+ expect(m.count).to eq 0
92
+ end
93
+ end
94
+
95
+ describe :forward do
96
+
97
+ it "run forward default amount of times" do
98
+ subject.forward
99
+ versions = DataMigrate::DataSchemaMigration.normalized_versions
100
+ expect(versions.count).to eq(1)
101
+ end
102
+
103
+ it "run forward defined number of times" do
104
+ subject.forward(2)
105
+ versions = DataMigrate::DataSchemaMigration.normalized_versions
106
+ expect(versions.count).to eq(1)
107
+ expect(versions.first).to eq "20091231235959"
108
+ versions = ActiveRecord::SchemaMigration.normalized_versions
109
+ expect(versions.count).to eq(1)
110
+ expect(versions.first).to eq "20131111111111"
111
+ end
112
+ end
113
+ end
114
+ end
@@ -0,0 +1,19 @@
1
+ require 'spec_helper'
2
+
3
+ if Rails::VERSION::MAJOR >= 5
4
+ subject = DataMigrate::MigrationFive
5
+ else
6
+ subject = DataMigrate::Migration
7
+ end
8
+
9
+ describe subject do
10
+ it "uses correct table name" do
11
+ expect(subject.table_name).to eq("data_migrations")
12
+ end
13
+
14
+ it "uses correct index name" do
15
+ expect(subject).to receive(:table_name_prefix) { "" }
16
+ expect(subject).to receive(:table_name_suffix) { "" }
17
+ expect(subject.index_name).to eq("unique_data_migrations")
18
+ end
19
+ end
@@ -0,0 +1,107 @@
1
+ require "spec_helper"
2
+
3
+ describe DataMigrate::DataMigrator do
4
+ let(:context) {
5
+ DataMigrate::MigrationContext.new("spec/db/data")
6
+ }
7
+
8
+ before do
9
+ unless Rails::VERSION::MAJOR == 5 and
10
+ Rails::VERSION::MINOR == 2
11
+ skip("Tests are only applicable for Rails 5.2")
12
+ end
13
+ end
14
+
15
+ after do
16
+ begin
17
+ ActiveRecord::Migration.drop_table("data_migrations")
18
+ rescue StandardError
19
+ nil
20
+ end
21
+ end
22
+
23
+ let(:db_config) do
24
+ {
25
+ adapter: "sqlite3",
26
+ database: "spec/db/test.db"
27
+ }
28
+ end
29
+
30
+ describe :migrate do
31
+ before do
32
+ ActiveRecord::Base.establish_connection(db_config)
33
+ ActiveRecord::SchemaMigration.create_table
34
+ end
35
+
36
+ it "migrates existing file" do
37
+ context.migrate(nil)
38
+ context.migrations_status
39
+ versions = DataMigrate::DataSchemaMigration.normalized_versions
40
+ expect(versions.count).to eq(2)
41
+ expect(versions).to include("20091231235959")
42
+ expect(versions).to include("20171231235959")
43
+ end
44
+
45
+ it "undo migration" do
46
+ context.migrate(nil)
47
+ context.run(:down, 20171231235959)
48
+ versions = DataMigrate::DataSchemaMigration.normalized_versions
49
+ expect(versions.count).to eq(1)
50
+ expect(versions).to include("20091231235959")
51
+ end
52
+
53
+ it "does not do anything if migration is undone twice" do
54
+ context.migrate(nil)
55
+ expect {
56
+ context.run(:down, 20171231235959)
57
+ }.to output(/Undoing SuperUpdate/).to_stdout
58
+ expect {
59
+ context.run(:down, 20171231235959)
60
+ }.not_to output(/Undoing SuperUpdate/).to_stdout
61
+ end
62
+
63
+ it "runs a specific migration" do
64
+ context.run(:up, 20171231235959)
65
+ versions = DataMigrate::DataSchemaMigration.normalized_versions
66
+ expect(versions.count).to eq(1)
67
+ expect(versions).to include("20171231235959")
68
+ end
69
+
70
+ it "does not do anything if migration is ran twice" do
71
+ expect {
72
+ context.run(:up, 20171231235959)
73
+ }.to output(/Doing SuperUpdate/).to_stdout
74
+ expect {
75
+ context.run(:down, 20171231235959)
76
+ }.not_to output(/Doing SuperUpdate/).to_stdout
77
+ end
78
+
79
+ it "alerts for an invalid specific migration" do
80
+ expect {
81
+ context.run(:up, 201712312)
82
+ }.to raise_error(
83
+ ActiveRecord::UnknownMigrationVersionError,
84
+ /No migration with version number 201712312/
85
+ )
86
+ end
87
+
88
+ it "rolls back latest migration" do
89
+ context.migrate(nil)
90
+ expect {
91
+ context.rollback
92
+ }.to output(/Undoing SuperUpdate/).to_stdout
93
+ versions = DataMigrate::DataSchemaMigration.normalized_versions
94
+ expect(versions.count).to eq(1)
95
+ expect(versions).to include("20091231235959")
96
+ end
97
+
98
+ it "rolls back 2 migrations" do
99
+ context.migrate(nil)
100
+ expect {
101
+ context.rollback(2)
102
+ }.to output(/Undoing SomeName/).to_stdout
103
+ versions = DataMigrate::DataSchemaMigration.normalized_versions
104
+ expect(versions.count).to eq(0)
105
+ end
106
+ end
107
+ end
@@ -0,0 +1,46 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "spec_helper"
4
+
5
+ describe DataMigrate::SchemaDumper do
6
+ let(:subject) { DataMigrate::SchemaDumper }
7
+ let(:db_config) do
8
+ {
9
+ adapter: "sqlite3",
10
+ database: "spec/db/test.db"
11
+ }
12
+ end
13
+ let(:fixture_file_timestamps) do
14
+ %w[20091231235959 20101231235959 20111231235959]
15
+ end
16
+
17
+ describe :dump do
18
+ before do
19
+ allow(DataMigrate::DataMigrator).
20
+ to receive(:db_config) { db_config }.at_least(:once)
21
+ ActiveRecord::Base.establish_connection(db_config)
22
+
23
+ ActiveRecord::SchemaMigration.create_table
24
+ DataMigrate::DataMigrator.assure_data_schema_table
25
+
26
+ ActiveRecord::Base.connection.execute <<-SQL
27
+ INSERT INTO #{DataMigrate::DataSchemaMigration.table_name}
28
+ VALUES #{fixture_file_timestamps.map { |t| "(#{t})" }.join(', ')}
29
+ SQL
30
+ end
31
+
32
+ after do
33
+ ActiveRecord::Migration.drop_table("data_migrations")
34
+ end
35
+
36
+ it "writes the define method with the version key to the stream" do
37
+ stream = StringIO.new
38
+ DataMigrate::SchemaDumper.dump(ActiveRecord::Base.connection, stream)
39
+ stream.rewind
40
+
41
+ last_version = fixture_file_timestamps.last
42
+ expected = "DataMigrate::Data.define(version: #{last_version})"
43
+ expect(stream.read).to include expected
44
+ end
45
+ end
46
+ 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
@@ -0,0 +1,93 @@
1
+ # frozen_string_literal: true
2
+ require "spec_helper"
3
+
4
+ describe DataMigrate::StatusService do
5
+ let(:subject) { DataMigrate::SchemaDumper }
6
+ let(:db_config) do
7
+ {
8
+ adapter: "sqlite3",
9
+ database: "spec/db/test.db"
10
+ }
11
+ end
12
+ let(:service) { DataMigrate::StatusService }
13
+
14
+ context "table does not exists" do
15
+ before do
16
+ ActiveRecord::Base.establish_connection(db_config)
17
+ end
18
+
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)
24
+
25
+ stream.rewind
26
+ expected = "Data migrations table does not exist"
27
+ expect(stream.read).to include expected
28
+ end
29
+ end
30
+
31
+ context "table exists" do
32
+ let(:fixture_file_timestamps) do
33
+ %w[20091231235959 20101231235959 20111231235959]
34
+ end
35
+
36
+ before do
37
+ allow(DataMigrate::DataMigrator).
38
+ to receive(:db_config) { db_config }.at_least(:once)
39
+ ActiveRecord::Base.establish_connection(db_config)
40
+
41
+ ActiveRecord::SchemaMigration.create_table
42
+ DataMigrate::DataMigrator.assure_data_schema_table
43
+
44
+ ActiveRecord::Base.connection.execute <<-SQL
45
+ INSERT INTO #{DataMigrate::DataSchemaMigration.table_name}
46
+ VALUES #{fixture_file_timestamps.map { |t| "(#{t})" }.join(', ')}
47
+ SQL
48
+
49
+ allow_any_instance_of(service).to receive(:root_folder) { "spec" }
50
+ end
51
+
52
+ after do
53
+ ActiveRecord::Migration.drop_table("data_migrations")
54
+ end
55
+
56
+ it "shows successfully executed migration" do
57
+ stream = StringIO.new
58
+ service.dump(ActiveRecord::Base.connection, stream)
59
+ stream.rewind
60
+
61
+ expected = " up 20091231235959 Some name"
62
+ expect(stream.read).to include expected
63
+ end
64
+
65
+ it "shows missing file migration" do
66
+ stream = StringIO.new
67
+ service.dump(ActiveRecord::Base.connection, stream)
68
+ stream.rewind
69
+
70
+ expected = " up 20101231235959 ********** NO FILE **********"
71
+ s = stream.read
72
+ expect(s).to include expected
73
+ end
74
+
75
+ it "shows migration that has not run yet" do
76
+ stream = StringIO.new
77
+ service.dump(ActiveRecord::Base.connection, stream)
78
+ stream.rewind
79
+
80
+ expected = " down 20171231235959 Super update"
81
+ s = stream.read
82
+ expect(s).to include expected
83
+ end
84
+
85
+ it "outputs migrations in chronological order" do
86
+ stream = StringIO.new
87
+ service.dump(ActiveRecord::Base.connection, stream)
88
+ stream.rewind
89
+ s = stream.read
90
+ expect(s.index("20091231235959")).to be < s.index("20111231235959")
91
+ end
92
+ end
93
+ 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