data_migrate 9.3.0 → 10.0.0.rc1

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 (50) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/build.yml +3 -3
  3. data/.github/workflows/gempush.yml +8 -6
  4. data/.gitignore +2 -3
  5. data/.ruby-version +1 -0
  6. data/.travis.yml +14 -0
  7. data/Appraisals +5 -5
  8. data/Changelog.md +2 -36
  9. data/Gemfile +1 -0
  10. data/Gemfile.rails6.1 +11 -0
  11. data/README.md +5 -7
  12. data/data_migrate.gemspec +2 -2
  13. data/gemfiles/{rails_7.1.gemfile → rails_6.0.gemfile} +2 -1
  14. data/gemfiles/rails_6.1.gemfile +1 -0
  15. data/gemfiles/rails_7.0.gemfile +2 -1
  16. data/lib/data_migrate/data_migrator.rb +23 -11
  17. data/lib/data_migrate/data_schema.rb +2 -2
  18. data/lib/data_migrate/data_schema_migration.rb +7 -24
  19. data/lib/data_migrate/database_tasks.rb +48 -126
  20. data/lib/data_migrate/legacy_migrator.rb +22 -0
  21. data/lib/data_migrate/migration_context.rb +8 -11
  22. data/lib/data_migrate/schema_dumper.rb +1 -1
  23. data/lib/data_migrate/schema_migration.rb +4 -5
  24. data/lib/data_migrate/status_service.rb +4 -4
  25. data/lib/data_migrate/tasks/data_migrate_tasks.rb +15 -14
  26. data/lib/data_migrate/version.rb +1 -1
  27. data/lib/data_migrate.rb +1 -2
  28. data/spec/data_migrate/data_migrator_spec.rb +14 -17
  29. data/spec/data_migrate/data_schema_migration_spec.rb +8 -25
  30. data/spec/data_migrate/data_spec.rb +1 -1
  31. data/spec/data_migrate/database_tasks_spec.rb +19 -34
  32. data/spec/data_migrate/legacy_migrator_spec.rb +38 -0
  33. data/spec/data_migrate/migration_context_spec.rb +8 -15
  34. data/spec/data_migrate/schema_dumper_spec.rb +3 -6
  35. data/spec/data_migrate/schema_migration_spec.rb +6 -13
  36. data/spec/data_migrate/status_service_spec.rb +4 -7
  37. data/spec/data_migrate/tasks/data_migrate_tasks_spec.rb +14 -13
  38. data/spec/db/data/20091231235959_some_name.rb +1 -1
  39. data/spec/db/data/20171231235959_super_update.rb +1 -1
  40. data/spec/db/migrate/20131111111111_late_migration.rb +1 -1
  41. data/spec/db/migrate/20202020202011_db_migration.rb +1 -1
  42. data/tasks/databases.rake +76 -38
  43. metadata +19 -21
  44. data/Gemfile.lock +0 -184
  45. data/gemfiles/rails_6.1.gemfile.lock +0 -229
  46. data/gemfiles/rails_7.0.gemfile.lock +0 -230
  47. data/gemfiles/rails_7.1.gemfile.lock +0 -263
  48. data/lib/data_migrate/database_configurations_wrapper.rb +0 -11
  49. data/lib/data_migrate/rails_helper.rb +0 -79
  50. data/lib/data_migrate/test.rb +0 -14
@@ -11,8 +11,7 @@ module DataMigrate
11
11
  migrations
12
12
  end
13
13
 
14
- data_migrator = DataMigrate::RailsHelper.data_migrator(:up, selected_migrations, DataMigrate::RailsHelper.schema_migration, DataMigrate::RailsHelper.internal_metadata, target_version)
15
- data_migrator.migrate
14
+ DataMigrator.new(:up, selected_migrations, target_version).migrate
16
15
  end
17
16
 
18
17
  def down(target_version = nil)
@@ -23,13 +22,11 @@ module DataMigrate
23
22
  migrations
24
23
  end
25
24
 
26
- data_migrator = DataMigrate::RailsHelper.data_migrator(:down, selected_migrations, DataMigrate::RailsHelper.schema_migration, DataMigrate::RailsHelper.internal_metadata, target_version)
27
- data_migrator.migrate
25
+ DataMigrator.new(:down, selected_migrations, target_version).migrate
28
26
  end
29
27
 
30
28
  def run(direction, target_version)
31
- data_migrator = DataMigrate::RailsHelper.data_migrator(direction, migrations, DataMigrate::RailsHelper.schema_migration, DataMigrate::RailsHelper.internal_metadata, target_version)
32
- data_migrator.run
29
+ DataMigrator.new(direction, migrations, target_version).run
33
30
  end
34
31
 
35
32
  def current_version
@@ -43,12 +40,12 @@ module DataMigrate
43
40
  end
44
41
 
45
42
  def migrations_status
46
- db_list = DataMigrate::RailsHelper.data_schema_migration.normalized_versions
43
+ db_list = DataSchemaMigration.normalized_versions
47
44
 
48
45
  file_list = migration_files.map do |file|
49
46
  version, name, scope = parse_migration_filename(file)
50
47
  raise ActiveRecord::IllegalMigrationNameError.new(file) unless version
51
- version = DataMigrate::RailsHelper.schema_migration.normalize_migration_number(version)
48
+ version = ActiveRecord::SchemaMigration.normalize_migration_number(version)
52
49
  status = db_list.delete(version) ? "up" : "down"
53
50
  [status, version, (name + scope).humanize]
54
51
  end.compact
@@ -63,15 +60,15 @@ module DataMigrate
63
60
  private
64
61
 
65
62
  def get_all_versions
66
- if DataMigrate::RailsHelper.data_schema_migration.table_exists?
67
- DataMigrate::RailsHelper.data_schema_migration.normalized_versions.map(&:to_i)
63
+ if DataMigrate::DataSchemaMigration.table_exists?
64
+ DataSchemaMigration.normalized_versions.map(&:to_i)
68
65
  else
69
66
  []
70
67
  end
71
68
  end
72
69
 
73
70
  def move(direction, steps)
74
- migrator = DataMigrate::RailsHelper.data_migrator(direction, migrations)
71
+ migrator = DataMigrator.new(direction, migrations)
75
72
 
76
73
  if current_version != 0 && !migrator.current_migration
77
74
  raise ActiveRecord::UnknownMigrationVersionError.new(current_version)
@@ -26,7 +26,7 @@ module DataMigrate
26
26
 
27
27
  def initialize(connection)
28
28
  @connection = connection
29
- all_versions = DataMigrate::RailsHelper.data_schema_migration.normalized_versions
29
+ all_versions = DataSchemaMigration.normalized_versions
30
30
 
31
31
  @version = begin
32
32
  all_versions.max
@@ -7,14 +7,14 @@ module DataMigrate
7
7
  def self.pending_schema_migrations
8
8
  all_migrations = DataMigrate::MigrationContext.new(migrations_paths).migrations
9
9
  sort_migrations(
10
- ActiveRecord::Migrator.new(:up, all_migrations, DataMigrate::RailsHelper.schema_migration, DataMigrate::RailsHelper.internal_metadata).
10
+ ActiveRecord::Migrator.new(:up, all_migrations, ActiveRecord::Base.connection.schema_migration).
11
11
  pending_migrations.
12
12
  map {|m| { version: m.version, kind: :schema }}
13
13
  )
14
14
  end
15
15
 
16
16
  def self.run(direction, migration_paths, version)
17
- ActiveRecord::MigrationContext.new(migration_paths, DataMigrate::RailsHelper.schema_migration).run(direction, version)
17
+ ActiveRecord::MigrationContext.new(migration_paths, ActiveRecord::Base.connection.schema_migration).run(direction, version)
18
18
  end
19
19
 
20
20
  def self.sort_migrations(set1, set2 = nil)
@@ -24,10 +24,9 @@ module DataMigrate
24
24
 
25
25
  def self.migrations_paths
26
26
  spec_name = DataMigrate.config.spec_name
27
- # The positional argument true is to include pre-release versions, such as 7.1.0.alpha
28
- if spec_name && Gem::Dependency.new("railties", ">= 7.0").match?("railties", Gem.loaded_specs["railties"].version, true)
27
+ if spec_name && Gem::Dependency.new("rails", "~> 7.0").match?("rails", Gem.loaded_specs["rails"].version)
29
28
  ActiveRecord::Base.configurations.configs_for(env_name: Rails.env, name: spec_name).migrations_paths
30
- elsif spec_name && Gem::Dependency.new("railties", "~> 6.1").match?("railties", Gem.loaded_specs["railties"].version)
29
+ elsif spec_name && Gem::Dependency.new("rails", "~> 6.0").match?("rails", Gem.loaded_specs["rails"].version)
31
30
  ActiveRecord::Base.configurations.configs_for(env_name: Rails.env, spec_name: spec_name).migrations_paths
32
31
  else
33
32
  Rails.application.config.paths["db/migrate"].to_a
@@ -24,11 +24,11 @@ module DataMigrate
24
24
  private
25
25
 
26
26
  def table_name
27
- DataMigrate::RailsHelper.data_schema_migration.table_name
27
+ DataMigrate::DataSchemaMigration.table_name
28
28
  end
29
29
 
30
30
  def output(stream)
31
- unless DataMigrate::RailsHelper.data_schema_migration.table_exists?
31
+ unless DataMigrate::DataSchemaMigration.table_exists?
32
32
  stream.puts "Data migrations table does not exist yet."
33
33
  return
34
34
  end
@@ -44,9 +44,9 @@ module DataMigrate
44
44
  end
45
45
 
46
46
  def database_name
47
- if Gem::Dependency.new("railties", "~> 7.0").match?("railties", Gem.loaded_specs["railties"].version)
47
+ if Gem::Dependency.new("rails", "~> 7.0").match?("rails", Gem.loaded_specs["rails"].version)
48
48
  ActiveRecord::Base.connection_db_config.configuration_hash[:database]
49
- elsif Gem::Dependency.new("railties", "~> 6.1").match?("railties", Gem.loaded_specs["railties"].version)
49
+ elsif Gem::Dependency.new("rails", "~> 6.0").match?("rails", Gem.loaded_specs["rails"].version)
50
50
  ActiveRecord::Base.connection_config[:database]
51
51
  end
52
52
  end
@@ -9,9 +9,9 @@ module DataMigrate
9
9
  @migrations_paths ||= DataMigrate.config.data_migrations_path
10
10
  end
11
11
 
12
- def dump
12
+ def dump(db_config)
13
13
  if dump_schema_after_migration?
14
- filename = DataMigrate::DatabaseTasks.schema_file
14
+ filename = DataMigrate::DatabaseTasks.dump_filename(spec_name(db_config), ActiveRecord::Base.schema_format)
15
15
  ActiveRecord::Base.establish_connection(DataMigrate.config.db_configuration) if DataMigrate.config.db_configuration
16
16
  File.open(filename, "w:utf-8") do |file|
17
17
  DataMigrate::SchemaDumper.dump(ActiveRecord::Base.connection, file)
@@ -22,7 +22,7 @@ module DataMigrate
22
22
  def migrate
23
23
  target_version = ENV["VERSION"] ? ENV["VERSION"].to_i : nil
24
24
 
25
- DataMigrate::DataMigrator.create_data_schema_table
25
+ DataMigrate::DataMigrator.assure_data_schema_table
26
26
  DataMigrate::MigrationContext.new(migrations_paths).migrate(target_version)
27
27
  end
28
28
 
@@ -44,15 +44,16 @@ module DataMigrate
44
44
  end
45
45
  end
46
46
 
47
- def status
48
- DataMigrate::StatusService.dump
47
+ def status(db_config)
48
+ puts "\ndatabase: #{spec_name(db_config)}\n\n"
49
+ DataMigrate::StatusService.dump(ActiveRecord::Base.connection)
49
50
  end
50
51
 
51
- def status_with_schema
52
+ def status_with_schema(db_config)
52
53
  db_list_data = ActiveRecord::Base.connection.select_values(
53
- "SELECT version FROM #{DataMigrate::RailsHelper.data_schema_migration.table_name}"
54
+ "SELECT version FROM #{DataMigrate::DataSchemaMigration.table_name}"
54
55
  )
55
- db_list_schema = DataMigrate::RailsHelper.schema_migration_versions
56
+ db_list_schema = ActiveRecord::SchemaMigration.all.pluck(:version)
56
57
  file_list = []
57
58
 
58
59
  Dir.foreach(File.join(Rails.root, migrations_paths)) do |file|
@@ -76,7 +77,7 @@ module DataMigrate
76
77
  file_list.sort!{|a,b| "#{a[1]}_#{a[3] == 'data' ? 1 : 0}" <=> "#{b[1]}_#{b[3] == 'data' ? 1 : 0}" }
77
78
 
78
79
  # output
79
- puts "\ndatabase: #{database_name}\n\n"
80
+ puts "\ndatabase: #{spec_name(db_config)}\n\n"
80
81
  puts "#{"Status".center(8)} #{"Type".center(8)} #{"Migration ID".ljust(14)} Migration Name"
81
82
  puts "-" * 60
82
83
  file_list.each do |file|
@@ -93,11 +94,11 @@ module DataMigrate
93
94
 
94
95
  private
95
96
 
96
- def database_name
97
- if Gem::Dependency.new("railties", "~> 7.0").match?("railties", Gem.loaded_specs["railties"].version)
98
- ActiveRecord::Base.connection_db_config.database
99
- elsif Gem::Dependency.new("railties", "~> 6.1").match?("railties", Gem.loaded_specs["railties"].version)
100
- ActiveRecord::Base.connection_config[:database]
97
+ def spec_name(db_config)
98
+ if Gem::Dependency.new("rails", "~> 7.0").match?("rails", Gem.loaded_specs["rails"].version)
99
+ db_config.name
100
+ elsif Gem::Dependency.new("rails", "~> 6.0").match?("rails", Gem.loaded_specs["rails"].version)
101
+ db_config.spec_name
101
102
  end
102
103
  end
103
104
  end
@@ -1,3 +1,3 @@
1
1
  module DataMigrate
2
- VERSION = "9.3.0".freeze
2
+ VERSION = "10.0.0.rc1".freeze
3
3
  end
data/lib/data_migrate.rb CHANGED
@@ -1,6 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require File.join(File.dirname(__FILE__), "data_migrate", "rails_helper")
4
3
  require File.join(File.dirname(__FILE__), "data_migrate", "data_migrator")
5
4
  require File.join(File.dirname(__FILE__), "data_migrate", "data_schema_migration")
6
5
  require File.join(File.dirname(__FILE__), "data_migrate", "data_schema")
@@ -10,9 +9,9 @@ require File.join(File.dirname(__FILE__), "data_migrate", "status_service")
10
9
  require File.join(File.dirname(__FILE__), "data_migrate", "migration_context")
11
10
  require File.join(File.dirname(__FILE__), "data_migrate", "railtie")
12
11
  require File.join(File.dirname(__FILE__), "data_migrate", "tasks/data_migrate_tasks")
12
+ require File.join(File.dirname(__FILE__), "data_migrate", "legacy_migrator")
13
13
  require File.join(File.dirname(__FILE__), "data_migrate", "config")
14
14
  require File.join(File.dirname(__FILE__), "data_migrate", "schema_migration")
15
- require File.join(File.dirname(__FILE__), "data_migrate", "database_configurations_wrapper")
16
15
 
17
16
  module DataMigrate
18
17
  def self.root
@@ -3,8 +3,7 @@
3
3
  require "spec_helper"
4
4
 
5
5
  describe DataMigrate::DataMigrator do
6
- let(:described_class) { DataMigrate::DataMigrator }
7
-
6
+ let(:subject) { DataMigrate::DataMigrator }
8
7
  let(:db_config) do
9
8
  {
10
9
  adapter: "sqlite3",
@@ -14,8 +13,8 @@ describe DataMigrate::DataMigrator do
14
13
 
15
14
  before do
16
15
  ActiveRecord::Base.establish_connection(db_config)
17
- DataMigrate::RailsHelper.schema_migration.create_table
18
- DataMigrate::RailsHelper.data_schema_migration.create_table
16
+ ::ActiveRecord::SchemaMigration.create_table
17
+ DataMigrate::DataSchemaMigration.create_table
19
18
  end
20
19
 
21
20
  after do
@@ -24,24 +23,22 @@ describe DataMigrate::DataMigrator do
24
23
  end
25
24
 
26
25
  describe ".load_migrated" do
27
- let(:migrator) { DataMigrate::RailsHelper.data_migrator(:up, []) }
28
-
29
26
  it "loads migrated versions" do
30
- DataMigrate::RailsHelper.data_schema_migration.create_version(20090000000000)
31
- DataMigrate::RailsHelper.schema_create_version(20100000000000)
32
- DataMigrate::RailsHelper.data_schema_migration.create_version(20110000000000)
33
- DataMigrate::RailsHelper.schema_create_version(20120000000000)
34
- migrated = migrator.load_migrated
27
+ DataMigrate::DataSchemaMigration.create(version: 20090000000000)
28
+ ::ActiveRecord::SchemaMigration.create(version: 20100000000000)
29
+ DataMigrate::DataSchemaMigration.create(version: 20110000000000)
30
+ ::ActiveRecord::SchemaMigration.create(version: 20120000000000)
31
+ migrated = subject.new(:up, []).load_migrated
35
32
  expect(migrated.count).to eq 2
36
33
  expect(migrated).to include 20090000000000
37
34
  expect(migrated).to include 20110000000000
38
35
  end
39
36
  end
40
37
 
41
- describe :create_data_schema_table do
38
+ describe :assure_data_schema_table do
42
39
  it "creates the data_migrations table" do
43
40
  ActiveRecord::Migration.drop_table("data_migrations") rescue nil
44
- described_class.create_data_schema_table
41
+ subject.assure_data_schema_table
45
42
  expect(
46
43
  ActiveRecord::Base.connection.table_exists?("data_migrations")
47
44
  ).to eq true
@@ -50,7 +47,7 @@ describe DataMigrate::DataMigrator do
50
47
 
51
48
  describe "#migrations_status" do
52
49
  it "returns all migrations statuses" do
53
- status = described_class.migrations_status
50
+ status = subject.migrations_status
54
51
  expect(status.length).to eq 2
55
52
  expect(status.first).to eq ["down", "20091231235959", "Some name"]
56
53
  expect(status.second).to eq ["down", "20171231235959", "Super update"]
@@ -60,19 +57,19 @@ describe DataMigrate::DataMigrator do
60
57
  describe :match do
61
58
  context "when the file does not match" do
62
59
  it "returns nil" do
63
- expect(described_class.match("not_a_data_migration_file")).to be_nil
60
+ expect(subject.match("not_a_data_migration_file")).to be_nil
64
61
  end
65
62
  end
66
63
 
67
64
  context "when the file doesn't end in .rb" do
68
65
  it "returns nil" do
69
- expect(described_class.match("20091231235959_some_name.rb.un~")).to be_nil
66
+ expect(subject.match("20091231235959_some_name.rb.un~")).to be_nil
70
67
  end
71
68
  end
72
69
 
73
70
  context "when the file matches" do
74
71
  it "returns a valid MatchData object" do
75
- match_data = described_class.match("20091231235959_some_name.rb")
72
+ match_data = subject.match("20091231235959_some_name.rb")
76
73
 
77
74
  expect(match_data[0]).to eq "20091231235959_some_name.rb"
78
75
  expect(match_data[1]).to eq "20091231235959"
@@ -1,33 +1,16 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  describe DataMigrate::DataSchemaMigration do
4
- if DataMigrate::RailsHelper.rails_version_equal_to_or_higher_than_7_1
5
- let(:connection) { double(:connection) }
6
- let(:subject) { DataMigrate::DataSchemaMigration.new(connection) }
7
-
8
- describe :table_name do
9
- it "returns correct table name" do
10
- expect(subject.table_name).to eq("data_migrations")
11
- end
12
- end
13
-
14
- describe :index_name do
15
- it "returns correct primary key name" do
16
- expect(subject.primary_key).to eq("version")
17
- end
18
- end
19
- else
20
- let(:subject) { DataMigrate::DataSchemaMigration }
21
- describe :table_name do
22
- it "returns correct table name" do
23
- expect(subject.table_name).to eq("data_migrations")
24
- end
4
+ let(:subject) { DataMigrate::DataSchemaMigration }
5
+ describe :table_name do
6
+ it "returns correct table name" do
7
+ expect(subject.table_name).to eq("data_migrations")
25
8
  end
9
+ end
26
10
 
27
- describe :index_name do
28
- it "returns correct primary key name" do
29
- expect(subject.primary_key).to eq("version")
30
- end
11
+ describe :index_name do
12
+ it "returns correct primary key name" do
13
+ expect(subject.primary_key).to eq("version")
31
14
  end
32
15
  end
33
16
  end
@@ -55,7 +55,7 @@ describe DataMigrate::Data do
55
55
 
56
56
  sql_select = <<-SQL
57
57
  SELECT version
58
- FROM #{DataMigrate::RailsHelper.data_schema_migration.table_name}
58
+ FROM #{DataMigrate::DataSchemaMigration.table_name}
59
59
  SQL
60
60
 
61
61
  db_list_data = ActiveRecord::Base.connection.
@@ -8,6 +8,12 @@ describe DataMigrate::DatabaseTasks do
8
8
  let(:data_migrations_path) {
9
9
  DataMigrate.config.data_migrations_path
10
10
  }
11
+ let(:db_config) do
12
+ {
13
+ adapter: "sqlite3",
14
+ database: "spec/db/test.db"
15
+ }
16
+ end
11
17
 
12
18
  before do
13
19
  # In a normal Rails installation, db_dir would defer to
@@ -21,10 +27,14 @@ describe DataMigrate::DatabaseTasks do
21
27
  allow(DataMigrate::Tasks::DataMigrateTasks).to receive(:migrations_paths) {
22
28
  data_migrations_path
23
29
  }
24
- ActiveRecord::Base.establish_connection({ adapter: "sqlite3", database: "spec/db/test.db" })
25
- hash_config = ActiveRecord::DatabaseConfigurations::HashConfig.new('test', 'test', { adapter: "sqlite3", database: "spec/db/test.db" })
26
- config_obj = ActiveRecord::DatabaseConfigurations.new([hash_config])
27
- allow(ActiveRecord::Base).to receive(:configurations).and_return(config_obj)
30
+ ActiveRecord::Base.establish_connection(db_config)
31
+ if Gem::Dependency.new("rails", ">= 6.1").match?("rails", Gem.loaded_specs["rails"].version)
32
+ hash_config = ActiveRecord::DatabaseConfigurations::HashConfig.new('test', 'test', db_config)
33
+ config_obj = ActiveRecord::DatabaseConfigurations.new([hash_config])
34
+ allow(ActiveRecord::Base).to receive(:configurations).and_return(config_obj)
35
+ else
36
+ ActiveRecord::Base.configurations[:test] = db_config
37
+ end
28
38
  end
29
39
 
30
40
  context "migrations" do
@@ -34,7 +44,7 @@ describe DataMigrate::DatabaseTasks do
34
44
  end
35
45
 
36
46
  before do
37
- DataMigrate::RailsHelper.schema_migration.create_table
47
+ ActiveRecord::SchemaMigration.create_table
38
48
 
39
49
  allow(DataMigrate::SchemaMigration).to receive(:migrations_paths) {
40
50
  migration_path
@@ -59,47 +69,22 @@ describe DataMigrate::DatabaseTasks do
59
69
  end
60
70
 
61
71
  describe :forward do
72
+
62
73
  it "run forward default amount of times" do
63
74
  subject.forward
64
- versions = DataMigrate::RailsHelper.data_schema_migration.normalized_versions
75
+ versions = DataMigrate::DataSchemaMigration.normalized_versions
65
76
  expect(versions.count).to eq(1)
66
77
  end
67
78
 
68
79
  it "run forward defined number of times" do
69
80
  subject.forward(2)
70
- versions = DataMigrate::RailsHelper.data_schema_migration.normalized_versions
81
+ versions = DataMigrate::DataSchemaMigration.normalized_versions
71
82
  expect(versions.count).to eq(1)
72
83
  expect(versions.first).to eq "20091231235959"
73
- versions = DataMigrate::RailsHelper.schema_migration.normalized_versions
84
+ versions = ActiveRecord::SchemaMigration.normalized_versions
74
85
  expect(versions.count).to eq(1)
75
86
  expect(versions.first).to eq "20131111111111"
76
87
  end
77
88
  end
78
-
79
- if DataMigrate::RailsHelper.rails_version_equal_to_or_higher_than_7_0
80
- describe :schema_dump_path do
81
- before do
82
- allow(ActiveRecord::Base).to receive(:configurations).and_return(ActiveRecord::DatabaseConfigurations.new([db_config]))
83
- end
84
-
85
- context "for primary database" do
86
- let(:db_config) { ActiveRecord::DatabaseConfigurations::HashConfig.new("development", "primary", {} ) }
87
-
88
- context "for :ruby db format" do
89
- it 'returns the data schema path' do
90
- allow(ActiveRecord).to receive(:schema_format).and_return(:ruby)
91
- expect(subject.schema_dump_path(db_config)).to eq("db/data_schema.rb")
92
- end
93
- end
94
-
95
- context "for :sql db format" do
96
- it 'returns the data schema path' do
97
- allow(ActiveRecord).to receive(:schema_format).and_return(:sql)
98
- expect(subject.schema_dump_path(db_config, :sql)).to eq("db/data_schema.rb")
99
- end
100
- end
101
- end
102
- end
103
- end
104
89
  end
105
90
  end
@@ -0,0 +1,38 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "spec_helper"
4
+
5
+ describe DataMigrate::LegacyMigrator do
6
+ let(:context) {
7
+ DataMigrate::MigrationContext.new("spec/db/data")
8
+ }
9
+
10
+ before do
11
+ ActiveRecord::SchemaMigration.create_table
12
+ DataMigrate::DataSchemaMigration.create_table
13
+ end
14
+
15
+ after do
16
+ ActiveRecord::Migration.drop_table("data_migrations") rescue nil
17
+ ActiveRecord::Migration.drop_table("schema_migrations") rescue nil
18
+ end
19
+
20
+ it "migrate legacy migrations to be in correct table" do
21
+ # simulate creation of legacy data migration when
22
+ # it was recorded in schema table
23
+ ActiveRecord::SchemaMigration.create(version: "20091231235959")
24
+
25
+ # create one migration in correct place
26
+ DataMigrate::DataSchemaMigration.create(version: "20171231235959")
27
+
28
+ migrated = DataMigrate::DataMigrator.new(:up, []).load_migrated
29
+ expect(migrated.count).to eq 1
30
+
31
+ DataMigrate::LegacyMigrator.new("spec/db/data").migrate
32
+
33
+ # after migacy migrator has been run, we should have records
34
+ # of both migrations
35
+ migrated = DataMigrate::DataMigrator .new(:up, []).load_migrated
36
+ expect(migrated.count).to eq 2
37
+ end
38
+ end
@@ -5,17 +5,10 @@ require "spec_helper"
5
5
  describe DataMigrate::DataMigrator do
6
6
  let(:context) { DataMigrate::MigrationContext.new("spec/db/data") }
7
7
  let(:schema_context) { ActiveRecord::MigrationContext.new("spec/db/migrate", ActiveRecord::Base.connection.schema_migration) }
8
- let(:db_config) do
9
- {
10
- adapter: "sqlite3",
11
- database: "spec/db/test.db"
12
- }
13
- end
14
8
 
15
9
  before do
16
- ActiveRecord::Base.establish_connection(db_config)
17
- DataMigrate::RailsHelper.schema_migration.create_table
18
- DataMigrate::RailsHelper.data_schema_migration.create_table
10
+ ActiveRecord::SchemaMigration.create_table
11
+ DataMigrate::DataSchemaMigration.create_table
19
12
  end
20
13
 
21
14
  after do
@@ -27,7 +20,7 @@ describe DataMigrate::DataMigrator do
27
20
  it "migrates existing file" do
28
21
  context.migrate(nil)
29
22
  context.migrations_status
30
- versions = DataMigrate::RailsHelper.data_schema_migration.normalized_versions
23
+ versions = DataMigrate::DataSchemaMigration.normalized_versions
31
24
  expect(versions.count).to eq(2)
32
25
  expect(versions).to include("20091231235959")
33
26
  expect(versions).to include("20171231235959")
@@ -36,7 +29,7 @@ describe DataMigrate::DataMigrator do
36
29
  it "undo migration" do
37
30
  context.migrate(nil)
38
31
  context.run(:down, 20171231235959)
39
- versions = DataMigrate::RailsHelper.data_schema_migration.normalized_versions
32
+ versions = DataMigrate::DataSchemaMigration.normalized_versions
40
33
  expect(versions.count).to eq(1)
41
34
  expect(versions).to include("20091231235959")
42
35
  end
@@ -53,7 +46,7 @@ describe DataMigrate::DataMigrator do
53
46
 
54
47
  it "runs a specific migration" do
55
48
  context.run(:up, 20171231235959)
56
- versions = DataMigrate::RailsHelper.data_schema_migration.normalized_versions
49
+ versions = DataMigrate::DataSchemaMigration.normalized_versions
57
50
  expect(versions.count).to eq(1)
58
51
  expect(versions).to include("20171231235959")
59
52
  end
@@ -81,7 +74,7 @@ describe DataMigrate::DataMigrator do
81
74
  expect {
82
75
  context.rollback
83
76
  }.to output(/Undoing SuperUpdate/).to_stdout
84
- versions = DataMigrate::RailsHelper.data_schema_migration.normalized_versions
77
+ versions = DataMigrate::DataSchemaMigration.normalized_versions
85
78
  expect(versions.count).to eq(1)
86
79
  expect(versions).to include("20091231235959")
87
80
  end
@@ -92,7 +85,7 @@ describe DataMigrate::DataMigrator do
92
85
  expect {
93
86
  context.rollback(2)
94
87
  }.to output(/Undoing SomeName/).to_stdout
95
- versions = DataMigrate::RailsHelper.data_schema_migration.normalized_versions
88
+ versions = DataMigrate::DataSchemaMigration.normalized_versions
96
89
  expect(versions.count).to eq(0)
97
90
  end
98
91
 
@@ -101,7 +94,7 @@ describe DataMigrate::DataMigrator do
101
94
  expect {
102
95
  context.rollback(2)
103
96
  }.to output(/Undoing SomeName/).to_stdout
104
- versions = DataMigrate::RailsHelper.data_schema_migration.normalized_versions
97
+ versions = DataMigrate::DataSchemaMigration.normalized_versions
105
98
  expect(versions.count).to eq(0)
106
99
  end
107
100
  end
@@ -9,12 +9,9 @@ describe DataMigrate::SchemaDumper do
9
9
  end
10
10
 
11
11
  before do
12
- DataMigrate::RailsHelper.schema_migration.create_table
13
- DataMigrate::RailsHelper.data_schema_migration.create_table
14
-
15
- fixture_file_timestamps.map do |t|
16
- DataMigrate::RailsHelper.data_schema_migration.create_version(t)
17
- end
12
+ ActiveRecord::SchemaMigration.create_table
13
+ DataMigrate::DataSchemaMigration.create_table
14
+ DataMigrate::DataSchemaMigration.create(fixture_file_timestamps.map { |t| { version: t } })
18
15
  end
19
16
 
20
17
  after do
@@ -8,17 +8,10 @@ describe DataMigrate::SchemaMigration do
8
8
  let(:fixture_file_timestamps) do
9
9
  %w[20091231235959 20101231235959 20111231235959]
10
10
  end
11
- let(:db_config) do
12
- {
13
- adapter: "sqlite3",
14
- database: "spec/db/test.db"
15
- }
16
- end
17
11
 
18
12
  before do
19
- ActiveRecord::Base.establish_connection(db_config)
20
- DataMigrate::RailsHelper.schema_migration.create_table
21
- DataMigrate::RailsHelper.data_schema_migration.create_table
13
+ ActiveRecord::SchemaMigration.create_table
14
+ DataMigrate::DataSchemaMigration.create_table
22
15
  end
23
16
 
24
17
  after do
@@ -45,7 +38,7 @@ describe DataMigrate::SchemaMigration do
45
38
  expect {
46
39
  subject.run(:up, migration_path, 20202020202011)
47
40
  }.to output(/20202020202011 DbMigration: migrating/).to_stdout
48
- versions = DataMigrate::RailsHelper.schema_migration.normalized_versions
41
+ versions = ActiveRecord::SchemaMigration.normalized_versions
49
42
  expect(versions.first).to eq("20202020202011")
50
43
  end
51
44
 
@@ -56,7 +49,7 @@ describe DataMigrate::SchemaMigration do
56
49
  subject.run(:down, migration_path, 20202020202011)
57
50
  }.to output(/Undoing DbMigration/).to_stdout
58
51
 
59
- versions = DataMigrate::RailsHelper.schema_migration.normalized_versions
52
+ versions = ActiveRecord::SchemaMigration.normalized_versions
60
53
 
61
54
  expect(versions.count).to eq(0)
62
55
  end
@@ -68,9 +61,9 @@ describe DataMigrate::SchemaMigration do
68
61
  let(:paths) { ['spec/db/migrate', 'spec/db/migrate/other'] }
69
62
  let(:specification_name) { "primary" }
70
63
  let(:config_options) do
71
- if Gem::Dependency.new("railties", "~> 6.1").match?("railties", Gem.loaded_specs["railties"].version)
64
+ if Gem::Dependency.new("rails", "~> 6.0").match?("rails", Gem.loaded_specs["rails"].version)
72
65
  { env_name: Rails.env, spec_name: specification_name }
73
- else
66
+ elsif Gem::Dependency.new("rails", "~> 7.0").match?("rails", Gem.loaded_specs["rails"].version)
74
67
  { env_name: Rails.env, name: specification_name }
75
68
  end
76
69
  end
@@ -7,7 +7,7 @@ describe DataMigrate::StatusService do
7
7
  let(:stream) { StringIO.new }
8
8
  let(:stream_data) { stream.read }
9
9
  let(:connection_db_config) do
10
- if Gem::Dependency.new("railties", ">= 6.1").match?("railties", Gem.loaded_specs["railties"].version)
10
+ if Gem::Dependency.new("rails", ">= 6.1").match?("rails", Gem.loaded_specs["rails"].version)
11
11
  ActiveRecord::Base.connection_db_config
12
12
  else
13
13
  ActiveRecord::Base.configurations.configs_for.first
@@ -33,12 +33,9 @@ describe DataMigrate::StatusService do
33
33
  end
34
34
 
35
35
  before do
36
- DataMigrate::RailsHelper.schema_migration.create_table
37
- DataMigrate::RailsHelper.data_schema_migration.create_table
38
-
39
- fixture_file_timestamps.map do |t|
40
- DataMigrate::RailsHelper.data_schema_migration.create_version(t)
41
- end
36
+ ActiveRecord::SchemaMigration.create_table
37
+ DataMigrate::DataSchemaMigration.create_table
38
+ DataMigrate::DataSchemaMigration.create(fixture_file_timestamps.map { |t| { version: t } })
42
39
 
43
40
  subject.dump(connection_db_config, stream)
44
41
  stream.rewind