data_migrate 8.0.0.rc1 → 8.1.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: af0b932d1ca71e8bd2218c66a901c7f4075722fc716d4acf2ba20356cec069a7
4
- data.tar.gz: cd0193ea16bac2ef7f21df588ff0c673e9e7706b99a55ae82452d0843c47b5d7
3
+ metadata.gz: c2279e8f7ac44136ae9fca448e3a239066cf901e1f8e46813888deed8d2288f5
4
+ data.tar.gz: c0314320a07bff4ce02e148b4e7026e22155a7eab18e3a69c441f1689880ff0f
5
5
  SHA512:
6
- metadata.gz: 20ddb8b51aa8f5fa817490baf8d016e594d15ed5a5f896fb26205fb629a2de29a5f9630a4992603d695219a8bf7d2b559c70968a6f6df6b0ec2529a9d388b6dd
7
- data.tar.gz: 5f879b36def5b29a024d01144663887a03cf296f2a09a3b65962ffbdb1851fdd2c383f379ec548607fd1df414fc71b47283694ae86d53c251692fdce0380c76c
6
+ metadata.gz: '087890b935d8a520994eebebfbfdf6c86b6cd115fbb7629f65e1d56170bd1c013109cbbb5bf737a4a61572db3e1a85e966589f4541c422d772e87fdaf2be2f5f'
7
+ data.tar.gz: f6a2e6811e8cdb29ab0cfa963a6fc69d4b8694fe09aa6cd0eb9859784cbe9c2c1e5fbaad4b35dee4c3923a0d74ab66c410523818f53e585eeced1cfee0546716
data/Changelog.md CHANGED
@@ -1,5 +1,14 @@
1
1
  # Changelog
2
2
 
3
+ ## 8.1.0
4
+
5
+ Avoid globally accessible functions for all rake tasks [berniechiu](https://github.com/berniechiu)
6
+ fixed `db:migrate:with_data` to compare data schema versions correctly [cadactive](https://github.com/cadactive)
7
+
8
+ ## 8.0.0.rc2
9
+
10
+ Bug fixes [gdott9](https://github.com/gdott9)
11
+
3
12
  ## 8.0.0.rc1
4
13
  Add support for Rails 7
5
14
  Removed support for Rails versions below 5.2. Now are supported only versions Rails 5.2 and up
data/README.md CHANGED
@@ -36,22 +36,8 @@ table to track all migrations.
36
36
 
37
37
  ## Rails Support
38
38
 
39
- Support Rails 5.0 through 6.0
39
+ Support Rails 5.2 through 7.0
40
40
 
41
- ### Important notes for older versions
42
-
43
- #### v2
44
-
45
- If you upgraded to Rails 4 while using `data_migrate` prior to version 2,
46
- the gem wrote data migration versions into
47
- `schema_migrations` table. After the fix, it was corrected to write into
48
- `data_migrations`.
49
-
50
- If you need to use these old migrations, add the following configuration
51
-
52
- It is recommended to move all legacy migrations from `schema_migrations` table into `data_migrations` table
53
-
54
- This may cause some unintended consequences. See [#22](https://github.com/ilyakatz/data-migrate/issues/22)
55
41
 
56
42
  #### v1
57
43
 
@@ -47,6 +47,40 @@ module DataMigrate
47
47
  Kernel.abort message
48
48
  end
49
49
  end
50
+
51
+ def pending_migrations
52
+ sort_migrations(
53
+ pending_schema_migrations,
54
+ pending_data_migrations
55
+ )
56
+ end
57
+
58
+ def sort_migrations set_1, set_2=nil
59
+ migrations = set_1 + (set_2 || [])
60
+ migrations.sort{|a,b| sort_string(a) <=> sort_string(b)}
61
+ end
62
+
63
+ def sort_string migration
64
+ "#{migration[:version]}_#{migration[:kind] == :data ? 1 : 0}"
65
+ end
66
+
67
+ def data_migrations_path
68
+ ::DataMigrate.config.data_migrations_path
69
+ end
70
+
71
+ def run_migration(migration, direction)
72
+ if migration[:kind] == :data
73
+ ::ActiveRecord::Migration.write("== %s %s" % ['Data', "=" * 71])
74
+ ::DataMigrate::DataMigrator.run(direction, data_migrations_path, migration[:version])
75
+ else
76
+ ::ActiveRecord::Migration.write("== %s %s" % ['Schema', "=" * 69])
77
+ ::DataMigrate::SchemaMigration.run(
78
+ direction,
79
+ ::Continuation::SchemaMigration.migrations_paths,
80
+ migration[:version]
81
+ )
82
+ end
83
+ end
50
84
  end
51
85
 
52
86
  # This overrides ActiveRecord::Tasks::DatabaseTasks
@@ -121,6 +155,5 @@ module DataMigrate
121
155
 
122
156
  sort == "asc" ? sort_migrations(migrations) : sort_migrations(migrations).reverse
123
157
  end
124
-
125
158
  end
126
159
  end
@@ -8,7 +8,7 @@ module DataMigrate
8
8
  private_class_method :new
9
9
 
10
10
  class << self
11
- def dump(connection = ActiveRecord::Base.connection, stream = STDOUT)
11
+ def dump(connection = ActiveRecord::Base.connection, stream = $stdout)
12
12
  new(connection).dump(stream)
13
13
  stream
14
14
  end
@@ -1,7 +1,7 @@
1
1
  module DataMigrate
2
2
  class StatusService
3
3
  class << self
4
- def dump(connection = ActiveRecord::Base.connection, stream = STDOUT)
4
+ def dump(connection = ActiveRecord::Base.connection, stream = $stdout)
5
5
  new(connection).dump(stream)
6
6
  stream
7
7
  end
@@ -2,6 +2,11 @@ module DataMigrate
2
2
  module Tasks
3
3
  module DataMigrateTasks
4
4
  extend self
5
+
6
+ def schema_migrations_path
7
+ File.join('db', 'migrate')
8
+ end
9
+
5
10
  def migrations_paths
6
11
  @migrations_paths ||= DataMigrate.config.data_migrations_path
7
12
  end
@@ -40,6 +45,82 @@ module DataMigrate
40
45
  ActiveRecord::Base.dump_schema_after_migration
41
46
  end
42
47
  end
48
+
49
+ def status
50
+ config = connect_to_database
51
+ return unless config
52
+
53
+ connection = ActiveRecord::Base.connection
54
+ puts "\ndatabase: #{config['database']}\n\n"
55
+ DataMigrate::StatusService.dump(connection)
56
+ end
57
+
58
+ def status_with_schema
59
+ config = connect_to_database
60
+ return unless config
61
+
62
+ db_list_data = ActiveRecord::Base.connection.select_values(
63
+ "SELECT version FROM #{DataMigrate::DataSchemaMigration.table_name}"
64
+ )
65
+ db_list_schema = ActiveRecord::Base.connection.select_values(
66
+ "SELECT version FROM #{ActiveRecord::SchemaMigration.schema_migrations_table_name}"
67
+ )
68
+ file_list = []
69
+
70
+ Dir.foreach(File.join(Rails.root, migrations_paths)) do |file|
71
+ # only files matching "20091231235959_some_name.rb" pattern
72
+ if match_data = /(\d{14})_(.+)\.rb/.match(file)
73
+ status = db_list_data.delete(match_data[1]) ? 'up' : 'down'
74
+ file_list << [status, match_data[1], match_data[2], 'data']
75
+ end
76
+ end
77
+
78
+ Dir.foreach(File.join(Rails.root, schema_migrations_path)) do |file|
79
+ # only files matching "20091231235959_some_name.rb" pattern
80
+ if match_data = /(\d{14})_(.+)\.rb/.match(file)
81
+ status = db_list_schema.delete(match_data[1]) ? 'up' : 'down'
82
+ file_list << [status, match_data[1], match_data[2], 'schema']
83
+ end
84
+ end
85
+
86
+ file_list.sort!{|a,b| "#{a[1]}_#{a[3] == 'data' ? 1 : 0}" <=> "#{b[1]}_#{b[3] == 'data' ? 1 : 0}" }
87
+
88
+ # output
89
+ puts "\ndatabase: #{config['database']}\n\n"
90
+ puts "#{"Status".center(8)} #{"Type".center(8)} #{"Migration ID".ljust(14)} Migration Name"
91
+ puts "-" * 60
92
+ file_list.each do |file|
93
+ puts "#{file[0].center(8)} #{file[3].center(8)} #{file[1].ljust(14)} #{file[2].humanize}"
94
+ end
95
+ db_list_schema.each do |version|
96
+ puts "#{'up'.center(8)} #{version.ljust(14)} *** NO SCHEMA FILE ***"
97
+ end
98
+ db_list_data.each do |version|
99
+ puts "#{'up'.center(8)} #{version.ljust(14)} *** NO DATA FILE ***"
100
+ end
101
+ puts
102
+ end
103
+
104
+ private
105
+
106
+ def connect_to_database
107
+ config = if ActiveRecord.version < Gem::Version.new('6.1')
108
+ ActiveRecord::Base.configurations[Rails.env || 'development']
109
+ else
110
+ ActiveRecord::Base.configurations.find_db_config(Rails.env || 'development').configuration_hash
111
+ end
112
+ ActiveRecord::Base.establish_connection(config)
113
+
114
+ unless DataMigrate::DataSchemaMigration.table_exists?
115
+ puts 'Data migrations table does not exist yet.'
116
+ config = nil
117
+ end
118
+ unless ActiveRecord::SchemaMigration.table_exists?
119
+ puts 'Schema migrations table does not exist yet.'
120
+ config = nil
121
+ end
122
+ config
123
+ end
43
124
  end
44
125
  end
45
126
  end
@@ -1,3 +1,3 @@
1
1
  module DataMigrate
2
- VERSION = "8.0.0.rc1".freeze
2
+ VERSION = "8.1.0".freeze
3
3
  end
@@ -115,4 +115,50 @@ describe DataMigrate::Tasks::DataMigrateTasks do
115
115
  end
116
116
  end
117
117
  end
118
+
119
+ describe :status do
120
+ let(:db_config) do
121
+ {
122
+ adapter: "sqlite3",
123
+ database: "spec/db/test.db"
124
+ }
125
+ end
126
+
127
+ before do
128
+ if Rails::VERSION::MAJOR == 5
129
+ ActiveRecord::Base.configurations['test'] = db_config
130
+ else
131
+ hash_config = ActiveRecord::DatabaseConfigurations::HashConfig.new('test', 'test', db_config)
132
+ config_obj = ActiveRecord::DatabaseConfigurations.new([hash_config])
133
+ allow(ActiveRecord::Base).to receive(:configurations).and_return(config_obj)
134
+ end
135
+
136
+ allow(Rails).to receive(:root) { '.' }
137
+
138
+ if Rails::VERSION::MAJOR == 5
139
+ allow(DataMigrate::Tasks::DataMigrateTasks).to receive(:schema_migrations_path) { 'spec/db/migrate/5.2' }
140
+ else
141
+ allow(DataMigrate::Tasks::DataMigrateTasks).to receive(:schema_migrations_path) { 'spec/db/migrate/6.0' }
142
+ end
143
+
144
+ DataMigrate::Tasks::DataMigrateTasks.migrate
145
+ end
146
+
147
+ after do
148
+ ActiveRecord::Migration.drop_table("data_migrations")
149
+ end
150
+
151
+ it "should display data migration status" do
152
+ expect {
153
+ DataMigrate::Tasks::DataMigrateTasks.status
154
+ }.to output(/up 20091231235959 Some name/).to_stdout
155
+ end
156
+
157
+ it "should display schema and data migration status" do
158
+ expect {
159
+ DataMigrate::Tasks::DataMigrateTasks.status_with_schema
160
+ }.to output(match(/up data 20091231235959 Some name/)
161
+ .and match(/down schema 20131111111111 Late migration/)).to_stdout
162
+ end
163
+ end
118
164
  end
data/tasks/databases.rake CHANGED
@@ -4,29 +4,29 @@ namespace :db do
4
4
  namespace :migrate do
5
5
  desc "Migrate the database data and schema (options: VERSION=x, VERBOSE=false)."
6
6
  task :with_data => :environment do
7
- assure_data_schema_table
7
+ DataMigrate::DataMigrator.assure_data_schema_table
8
8
 
9
9
  ActiveRecord::Migration.verbose = ENV["VERBOSE"] ? ENV["VERBOSE"] == "true" : true
10
10
  target_version = ENV["VERSION"] ? ENV["VERSION"].to_i : nil
11
11
  migrations = []
12
12
 
13
13
  if target_version.nil?
14
- migrations = pending_migrations.map{ |m| m.merge(:direction =>:up) }
14
+ migrations = DataMigrate::DatabaseTasks.pending_migrations.map{ |m| m.merge(:direction =>:up) }
15
15
  else
16
16
  current_schema_version = ActiveRecord::Migrator.current_version
17
17
  schema_migrations = if target_version > current_schema_version
18
- pending_schema_migrations.keep_if{ |m| m[:version] <= target_version }.map{ |m| m.merge(:direction =>:up) }
18
+ DataMigrate::DatabaseTasks.pending_schema_migrations.keep_if{ |m| m[:version] <= target_version }.map{ |m| m.merge(:direction =>:up) }
19
19
  elsif target_version < current_schema_version
20
- past_migrations.keep_if{ |m| m[:version] > target_version }.map{ |m| m.merge(:direction =>:down) }
20
+ DataMigrate::DatabaseTasks.past_migrations.keep_if{ |m| m[:version] > target_version }.map{ |m| m.merge(:direction =>:down) }
21
21
  else # ==
22
22
  []
23
23
  end
24
24
 
25
- current_data_version = ActiveRecord::Migrator.current_version
25
+ current_data_version = DataMigrate::DataMigrator.current_version
26
26
  data_migrations = if target_version > current_data_version
27
- pending_data_migrations.keep_if{ |m| m[:version] <= target_version }.map{ |m| m.merge(:direction =>:up) }
27
+ DataMigrate::DatabaseTasks.pending_data_migrations.keep_if{ |m| m[:version] <= target_version }.map{ |m| m.merge(:direction =>:up) }
28
28
  elsif target_version < current_data_version
29
- past_migrations.keep_if{ |m| m[:version] > target_version }.map{ |m| m.merge(:direction =>:down) }
29
+ DataMigrate::DatabaseTasks.past_migrations.keep_if{ |m| m[:version] > target_version }.map{ |m| m.merge(:direction =>:down) }
30
30
  else # ==
31
31
  []
32
32
  end
@@ -35,9 +35,9 @@ namespace :db do
35
35
  elsif data_migrations.empty?
36
36
  schema_migrations
37
37
  elsif target_version > current_data_version && target_version > current_schema_version
38
- sort_migrations data_migrations, schema_migrations
38
+ DataMigrate::DatabaseTasks.sort_migrations data_migrations, schema_migrations
39
39
  elsif target_version < current_data_version && target_version < current_schema_version
40
- sort_migrations(data_migrations, schema_migrations).reverse
40
+ DataMigrate::DatabaseTasks.sort_migrations(data_migrations, schema_migrations).reverse
41
41
  elsif target_version > current_data_version && target_version < current_schema_version
42
42
  schema_migrations + data_migrations
43
43
  elsif target_version < current_data_version && target_version > current_schema_version
@@ -46,7 +46,7 @@ namespace :db do
46
46
  end
47
47
 
48
48
  migrations.each do |migration|
49
- run_migration(migration, migration[:direction])
49
+ DataMigrate::DatabaseTasks.run_migration(migration, migration[:direction])
50
50
  end
51
51
 
52
52
  Rake::Task["db:_dump"].invoke
@@ -56,7 +56,7 @@ namespace :db do
56
56
  namespace :redo do
57
57
  desc 'Rollbacks the database one migration and re migrate up (options: STEP=x, VERSION=x).'
58
58
  task :with_data => :environment do
59
- assure_data_schema_table
59
+ DataMigrate::DataMigrator.assure_data_schema_table
60
60
  if ENV["VERSION"]
61
61
  Rake::Task["db:migrate:down:with_data"].invoke
62
62
  Rake::Task["db:migrate:up:with_data"].invoke
@@ -72,16 +72,16 @@ namespace :db do
72
72
  task :with_data => :environment do
73
73
  version = ENV["VERSION"] ? ENV["VERSION"].to_i : nil
74
74
  raise "VERSION is required" unless version
75
- assure_data_schema_table
75
+ DataMigrate::DataMigrator.assure_data_schema_table
76
76
  run_both = ENV["BOTH"] == "true"
77
- migrations = pending_migrations.keep_if{|m| m[:version] == version}
77
+ migrations = DataMigrate::DatabaseTasks.pending_migrations.keep_if{|m| m[:version] == version}
78
78
 
79
79
  unless run_both || migrations.size < 2
80
80
  migrations = migrations.slice(0,1)
81
81
  end
82
82
 
83
83
  migrations.each do |migration|
84
- run_migration(migration, :up)
84
+ DataMigrate::DatabaseTasks.run_migration(migration, :up)
85
85
  end
86
86
 
87
87
  Rake::Task["db:_dump"].invoke
@@ -94,16 +94,16 @@ namespace :db do
94
94
  task :with_data => :environment do
95
95
  version = ENV["VERSION"] ? ENV["VERSION"].to_i : nil
96
96
  raise "VERSION is required" unless version
97
- assure_data_schema_table
97
+ DataMigrate::DataMigrator.assure_data_schema_table
98
98
  run_both = ENV["BOTH"] == "true"
99
- migrations = past_migrations.keep_if{|m| m[:version] == version}
99
+ migrations = DataMigrate::DatabaseTasks.past_migrations.keep_if{|m| m[:version] == version}
100
100
 
101
101
  unless run_both || migrations.size < 2
102
102
  migrations = migrations.slice(0,1)
103
103
  end
104
104
 
105
105
  migrations.each do |migration|
106
- run_migration(migration, :down)
106
+ DataMigrate::DatabaseTasks.run_migration(migration, :down)
107
107
  end
108
108
 
109
109
  Rake::Task["db:_dump"].invoke
@@ -114,49 +114,7 @@ namespace :db do
114
114
  namespace :status do
115
115
  desc "Display status of data and schema migrations"
116
116
  task :with_data => :environment do
117
- config = connect_to_database
118
- next unless config
119
-
120
- db_list_data = ActiveRecord::Base.connection.select_values(
121
- "SELECT version FROM #{DataMigrate::DataSchemaMigration.table_name}"
122
- )
123
- db_list_schema = ActiveRecord::Base.connection.select_values(
124
- "SELECT version FROM #{ActiveRecord::SchemaMigration.schema_migrations_table_name}"
125
- )
126
- file_list = []
127
-
128
- Dir.foreach(File.join(Rails.root, data_migrations_path)) do |file|
129
- # only files matching "20091231235959_some_name.rb" pattern
130
- if match_data = /(\d{14})_(.+)\.rb/.match(file)
131
- status = db_list_data.delete(match_data[1]) ? 'up' : 'down'
132
- file_list << [status, match_data[1], match_data[2], 'data']
133
- end
134
- end
135
-
136
- Dir.foreach(File.join(Rails.root, 'db', 'migrate')) do |file|
137
- # only files matching "20091231235959_some_name.rb" pattern
138
- if match_data = /(\d{14})_(.+)\.rb/.match(file)
139
- status = db_list_schema.delete(match_data[1]) ? 'up' : 'down'
140
- file_list << [status, match_data[1], match_data[2], 'schema']
141
- end
142
- end
143
-
144
- file_list.sort!{|a,b| "#{a[1]}_#{a[3] == 'data' ? 1 : 0}" <=> "#{b[1]}_#{b[3] == 'data' ? 1 : 0}" }
145
-
146
- # output
147
- puts "\ndatabase: #{config['database']}\n\n"
148
- puts "#{"Status".center(8)} #{"Type".center(8)} #{"Migration ID".ljust(14)} Migration Name"
149
- puts "-" * 60
150
- file_list.each do |file|
151
- puts "#{file[0].center(8)} #{file[3].center(8)} #{file[1].ljust(14)} #{file[2].humanize}"
152
- end
153
- db_list_schema.each do |version|
154
- puts "#{'up'.center(8)} #{version.ljust(14)} *** NO SCHEMA FILE ***"
155
- end
156
- db_list_data.each do |version|
157
- puts "#{'up'.center(8)} #{version.ljust(14)} *** NO DATA FILE ***"
158
- end
159
- puts
117
+ DataMigrate::Tasks::DataMigrateTasks.status_with_schema
160
118
  end
161
119
  end
162
120
  end # END OF MIGRATE NAME SPACE
@@ -165,9 +123,9 @@ namespace :db do
165
123
  desc 'Rolls the schema back to the previous version (specify steps w/ STEP=n).'
166
124
  task :with_data => :environment do
167
125
  step = ENV['STEP'] ? ENV['STEP'].to_i : 1
168
- assure_data_schema_table
169
- past_migrations[0..(step - 1)].each do | past_migration |
170
- run_migration(past_migration, :down)
126
+ DataMigrate::DataMigrator.assure_data_schema_table
127
+ DataMigrate::DatabaseTasks.past_migrations[0..(step - 1)].each do | past_migration |
128
+ DataMigrate::DatabaseTasks.run_migration(past_migration, :down)
171
129
  end
172
130
 
173
131
  Rake::Task["db:_dump"].invoke
@@ -178,7 +136,7 @@ namespace :db do
178
136
  namespace :forward do
179
137
  desc 'Pushes the schema to the next version (specify steps w/ STEP=n).'
180
138
  task :with_data => :environment do
181
- assure_data_schema_table
139
+ DataMigrate::DataMigrator.assure_data_schema_table
182
140
  step = ENV['STEP'] ? ENV['STEP'].to_i : 1
183
141
  DataMigrate::DatabaseTasks.forward(step)
184
142
  Rake::Task["db:_dump"].invoke
@@ -189,7 +147,7 @@ namespace :db do
189
147
  namespace :version do
190
148
  desc "Retrieves the current schema version numbers for data and schema migrations"
191
149
  task :with_data => :environment do
192
- assure_data_schema_table
150
+ DataMigrate::DataMigrator.assure_data_schema_table
193
151
  puts "Current Schema version: #{ActiveRecord::Migrator.current_version}"
194
152
  puts "Current Data version: #{DataMigrate::DataMigrator.current_version}"
195
153
  end
@@ -199,7 +157,7 @@ namespace :db do
199
157
  desc "Raises an error if there are pending migrations or data migrations"
200
158
  task with_data: :environment do
201
159
  message = %{Run `rake db:migrate:with_data` to update your database then try again.}
202
- DataMigrate::Tasks::DataMigrateTasks.abort_if_pending_migrations(pending_migrations, message)
160
+ DataMigrate::Tasks::DataMigrateTasks.abort_if_pending_migrations(DataMigrate::DatabaseTasks.pending_migrations, message)
203
161
  end
204
162
  end
205
163
 
@@ -242,7 +200,7 @@ namespace :data do
242
200
  namespace :migrate do
243
201
  desc 'Rollbacks the database one migration and re migrate up (options: STEP=x, VERSION=x).'
244
202
  task :redo => :environment do
245
- assure_data_schema_table
203
+ DataMigrate::DataMigrator.assure_data_schema_table
246
204
  if ENV["VERSION"]
247
205
  Rake::Task["data:migrate:down"].invoke
248
206
  Rake::Task["data:migrate:up"].invoke
@@ -254,10 +212,10 @@ namespace :data do
254
212
 
255
213
  desc 'Runs the "up" for a given migration VERSION.'
256
214
  task :up => :environment do
257
- assure_data_schema_table
215
+ DataMigrate::DataMigrator.assure_data_schema_table
258
216
  version = ENV["VERSION"] ? ENV["VERSION"].to_i : nil
259
217
  raise "VERSION is required" unless version
260
- DataMigrate::DataMigrator.run(:up, data_migrations_path, version)
218
+ DataMigrate::DataMigrator.run(:up, DataMigrate::DatabaseTasks.data_migrations_path, version)
261
219
  Rake::Task["data:dump"].invoke
262
220
  end
263
221
 
@@ -265,52 +223,48 @@ namespace :data do
265
223
  task :down => :environment do
266
224
  version = ENV["VERSION"] ? ENV["VERSION"].to_i : nil
267
225
  raise "VERSION is required" unless version
268
- assure_data_schema_table
269
- DataMigrate::DataMigrator.run(:down, data_migrations_path, version)
226
+ DataMigrate::DataMigrator.assure_data_schema_table
227
+ DataMigrate::DataMigrator.run(:down, DataMigrate::DatabaseTasks.data_migrations_path, version)
270
228
  Rake::Task["data:dump"].invoke
271
229
  end
272
230
 
273
231
  desc "Display status of data migrations"
274
232
  task :status => :environment do
275
- config = ActiveRecord::Base.configurations[Rails.env || 'development']
276
- ActiveRecord::Base.establish_connection(config)
277
- connection = ActiveRecord::Base.connection
278
- puts "\ndatabase: #{config['database']}\n\n"
279
- DataMigrate::StatusService.dump(connection)
233
+ DataMigrate::Tasks::DataMigrateTasks.status
280
234
  end
281
235
  end
282
236
 
283
237
  desc 'Rolls the schema back to the previous version (specify steps w/ STEP=n).'
284
238
  task :rollback => :environment do
285
- assure_data_schema_table
239
+ DataMigrate::DataMigrator.assure_data_schema_table
286
240
  step = ENV['STEP'] ? ENV['STEP'].to_i : 1
287
- DataMigrate::DataMigrator.rollback(data_migrations_path, step)
241
+ DataMigrate::DataMigrator.rollback(DataMigrate::DatabaseTasks.data_migrations_path, step)
288
242
  Rake::Task["data:dump"].invoke
289
243
  end
290
244
 
291
245
  desc 'Pushes the schema to the next version (specify steps w/ STEP=n).'
292
246
  task :forward => :environment do
293
- assure_data_schema_table
247
+ DataMigrate::DataMigrator.assure_data_schema_table
294
248
  step = ENV['STEP'] ? ENV['STEP'].to_i : 1
295
249
  # TODO: No worky for .forward
296
250
  # DataMigrate::DataMigrator.forward('db/data/', step)
297
- migrations = pending_data_migrations.reverse.pop(step).reverse
251
+ migrations = DataMigrate::DatabaseTasks.pending_data_migrations.reverse.pop(step).reverse
298
252
  migrations.each do | pending_migration |
299
- DataMigrate::DataMigrator.run(:up, data_migrations_path, pending_migration[:version])
253
+ DataMigrate::DataMigrator.run(:up, DataMigrate::DatabaseTasks.data_migrations_path, pending_migration[:version])
300
254
  end
301
255
  Rake::Task["data:dump"].invoke
302
256
  end
303
257
 
304
258
  desc "Retrieves the current schema version number for data migrations"
305
259
  task :version => :environment do
306
- assure_data_schema_table
260
+ DataMigrate::DataMigrator.assure_data_schema_table
307
261
  puts "Current data version: #{DataMigrate::DataMigrator.current_version}"
308
262
  end
309
263
 
310
264
  desc "Raises an error if there are pending data migrations"
311
265
  task abort_if_pending_migrations: :environment do
312
266
  message = %{Run `rake data:migrate` to update your database then try again.}
313
- DataMigrate::Tasks::DataMigrateTasks.abort_if_pending_migrations(pending_data_migrations, message)
267
+ DataMigrate::Tasks::DataMigrateTasks.abort_if_pending_migrations(DataMigrate::DatabaseTasks.pending_data_migrations, message)
314
268
  end
315
269
 
316
270
  desc "Create a db/data_schema.rb file that stores the current data version"
@@ -333,68 +287,3 @@ namespace :data do
333
287
  end
334
288
  end
335
289
  end
336
-
337
- def pending_migrations
338
- DataMigrate::DatabaseTasks.sort_migrations(
339
- DataMigrate::DatabaseTasks.pending_schema_migrations,
340
- DataMigrate::DatabaseTasks.pending_data_migrations
341
- )
342
- end
343
-
344
- def pending_data_migrations
345
- DataMigrate::DatabaseTasks.pending_data_migrations
346
- end
347
-
348
- def pending_schema_migrations
349
- DataMigrate::DatabaseTasks.pending_schema_migrations
350
- end
351
-
352
- def sort_migrations set_1, set_2=nil
353
- migrations = set_1 + (set_2 || [])
354
- migrations.sort{|a,b| sort_string(a) <=> sort_string(b)}
355
- end
356
-
357
- def sort_string migration
358
- "#{migration[:version]}_#{migration[:kind] == :data ? 1 : 0}"
359
- end
360
-
361
- def connect_to_database
362
- config = ActiveRecord::Base.configurations[Rails.env || 'development']
363
- ActiveRecord::Base.establish_connection(config)
364
-
365
- unless DataMigrate::DataSchemaMigration.table_exists?
366
- puts 'Data migrations table does not exist yet.'
367
- config = nil
368
- end
369
- unless ActiveRecord::SchemaMigration.table_exists?
370
- puts 'Schema migrations table does not exist yet.'
371
- config = nil
372
- end
373
- config
374
- end
375
-
376
- def past_migrations(sort=nil)
377
- DataMigrate::DatabaseTasks.past_migrations(sort)
378
- end
379
-
380
- def assure_data_schema_table
381
- DataMigrate::DataMigrator.assure_data_schema_table
382
- end
383
-
384
- def data_migrations_path
385
- DataMigrate.config.data_migrations_path
386
- end
387
-
388
- def run_migration(migration, direction)
389
- if migration[:kind] == :data
390
- ActiveRecord::Migration.write("== %s %s" % ['Data', "=" * 71])
391
- DataMigrate::DataMigrator.run(direction, data_migrations_path, migration[:version])
392
- else
393
- ActiveRecord::Migration.write("== %s %s" % ['Schema', "=" * 69])
394
- DataMigrate::SchemaMigration.run(
395
- direction,
396
- DataMigrate::SchemaMigration.migrations_paths,
397
- migration[:version]
398
- )
399
- end
400
- 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: 8.0.0.rc1
4
+ version: 8.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Andrew J Vargo
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2022-01-18 00:00:00.000000000 Z
13
+ date: 2022-08-02 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: activerecord
@@ -287,11 +287,11 @@ required_ruby_version: !ruby/object:Gem::Requirement
287
287
  version: '0'
288
288
  required_rubygems_version: !ruby/object:Gem::Requirement
289
289
  requirements:
290
- - - ">"
290
+ - - ">="
291
291
  - !ruby/object:Gem::Version
292
- version: 1.3.1
292
+ version: '0'
293
293
  requirements: []
294
- rubygems_version: 3.2.32
294
+ rubygems_version: 3.3.7
295
295
  signing_key:
296
296
  specification_version: 4
297
297
  summary: Rake tasks to migrate data alongside schema changes.