data_migrate 3.2.0 → 11.3.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 (46) hide show
  1. checksums.yaml +5 -5
  2. data/Changelog.md +246 -2
  3. data/README.md +107 -91
  4. data/lib/capistrano/data_migrate/migrate.rb +3 -4
  5. data/lib/data_migrate/config.rb +33 -0
  6. data/lib/data_migrate/data_migrator.rb +54 -58
  7. data/lib/data_migrate/data_schema.rb +63 -0
  8. data/lib/data_migrate/data_schema_migration.rb +23 -6
  9. data/lib/data_migrate/database_configurations_wrapper.rb +11 -0
  10. data/lib/data_migrate/database_tasks.rb +290 -0
  11. data/lib/data_migrate/migration_context.rb +93 -0
  12. data/lib/data_migrate/rails_helper.rb +91 -0
  13. data/lib/data_migrate/schema_dumper.rb +38 -0
  14. data/lib/data_migrate/schema_migration.rb +41 -0
  15. data/lib/data_migrate/status_service.rb +58 -0
  16. data/lib/data_migrate/tasks/data_migrate_tasks.rb +107 -0
  17. data/lib/data_migrate/version.rb +1 -1
  18. data/lib/data_migrate.rb +20 -7
  19. data/lib/generators/data_migrate.rb +15 -2
  20. data/lib/generators/data_migration/data_migration_generator.rb +22 -21
  21. data/lib/generators/data_migration/templates/data_migration.rb +4 -2
  22. data/tasks/databases.rake +115 -228
  23. metadata +64 -42
  24. data/.gitignore +0 -6
  25. data/.rspec +0 -3
  26. data/.travis.yml +0 -17
  27. data/Appraisals +0 -21
  28. data/Gemfile +0 -4
  29. data/Gemfile.rails5 +0 -5
  30. data/Gemfile.rails5.1 +0 -5
  31. data/Rakefile +0 -2
  32. data/data_migrate.gemspec +0 -39
  33. data/gemfiles/rails_4.0.gemfile +0 -7
  34. data/gemfiles/rails_4.1.gemfile +0 -7
  35. data/gemfiles/rails_4.2.gemfile +0 -8
  36. data/gemfiles/rails_5.0.gemfile +0 -7
  37. data/gemfiles/rails_5.1.gemfile +0 -7
  38. data/lib/data_migrate/migration.rb +0 -26
  39. data/lib/data_migrate/migration_five.rb +0 -26
  40. data/screenshot.png +0 -0
  41. data/spec/data_migrate/data_migrator_spec.rb +0 -45
  42. data/spec/data_migrate/data_schema_migration_spec.rb +0 -16
  43. data/spec/data_migrate/migration.rb +0 -19
  44. data/spec/generators/data_migration/data_migration_generator_spec.rb +0 -27
  45. data/spec/spec_helper.rb +0 -5
  46. data/tasks/.gitkeep +0 -0
data/tasks/databases.rake CHANGED
@@ -1,69 +1,20 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'data_migrate/tasks/data_migrate_tasks'
4
+
1
5
  namespace :db do
2
6
  namespace :migrate do
3
7
  desc "Migrate the database data and schema (options: VERSION=x, VERBOSE=false)."
4
- task :with_data => :environment do
5
- assure_data_schema_table
6
-
7
- ActiveRecord::Migration.verbose = ENV["VERBOSE"] ? ENV["VERBOSE"] == "true" : true
8
- target_version = ENV["VERSION"] ? ENV["VERSION"].to_i : nil
9
- migrations = []
10
-
11
- if target_version.nil?
12
- migrations = pending_migrations.map{ |m| m.merge(:direction =>:up) }
13
- else
14
- current_schema_version = ActiveRecord::Migrator.current_version
15
- schema_migrations = if target_version > current_schema_version
16
- pending_schema_migrations.keep_if{ |m| m[:version] <= target_version }.map{ |m| m.merge(:direction =>:up) }
17
- elsif target_version < current_schema_version
18
- past_migrations.keep_if{ |m| m[:version] > target_version }.map{ |m| m.merge(:direction =>:down) }
19
- else # ==
20
- []
21
- end
22
-
23
- current_data_version = ActiveRecord::Migrator.current_version
24
- data_migrations = if target_version > current_data_version
25
- pending_data_migrations.keep_if{ |m| m[:version] <= target_version }.map{ |m| m.merge(:direction =>:up) }
26
- elsif target_version < current_data_version
27
- past_migrations.keep_if{ |m| m[:version] > target_version }.map{ |m| m.merge(:direction =>:down) }
28
- else # ==
29
- []
30
- end
31
- migrations = if schema_migrations.empty?
32
- data_migrations
33
- elsif data_migrations.empty?
34
- schema_migrations
35
- elsif target_version > current_data_version && target_version > current_schema_version
36
- sort_migrations data_migrations, schema_migrations
37
- elsif target_version < current_data_version && target_version < current_schema_version
38
- sort_migrations(data_migrations, schema_migrations).reverse
39
- elsif target_version > current_data_version && target_version < current_schema_version
40
- schema_migrations + data_migrations
41
- elsif target_version < current_data_version && target_version > current_schema_version
42
- schema_migrations + data_migrations
43
- end
44
- end
45
-
46
- migrations.each do |migration|
47
- if migration[:kind] == :data
48
- ActiveRecord::Migration.write("== %s %s" % ['Data', "=" * 71])
49
- DataMigrate::DataMigrator.run(migration[:direction], "db/data/", migration[:version])
50
- else
51
- ActiveRecord::Migration.write("== %s %s" % ['Schema', "=" * 69])
52
- ActiveRecord::Migrator.run(
53
- migration[:direction],
54
- Rails.application.config.paths["db/migrate"],
55
- migration[:version]
56
- )
57
- end
58
- end
59
-
60
- Rake::Task["db:schema:dump"].invoke if ActiveRecord::Base.schema_format == :ruby
8
+ task :with_data => :load_config do
9
+ DataMigrate::DatabaseTasks.migrate_with_data
10
+ Rake::Task["db:_dump"].invoke
11
+ Rake::Task["data:dump"].invoke
61
12
  end
62
13
 
63
14
  namespace :redo do
64
15
  desc 'Rollbacks the database one migration and re migrate up (options: STEP=x, VERSION=x).'
65
16
  task :with_data => :environment do
66
- assure_data_schema_table
17
+ DataMigrate::DataMigrator.create_data_schema_table
67
18
  if ENV["VERSION"]
68
19
  Rake::Task["db:migrate:down:with_data"].invoke
69
20
  Rake::Task["db:migrate:up:with_data"].invoke
@@ -79,23 +30,20 @@ namespace :db do
79
30
  task :with_data => :environment do
80
31
  version = ENV["VERSION"] ? ENV["VERSION"].to_i : nil
81
32
  raise "VERSION is required" unless version
82
- assure_data_schema_table
33
+ DataMigrate::DataMigrator.create_data_schema_table
83
34
  run_both = ENV["BOTH"] == "true"
84
- migrations = pending_migrations.keep_if{|m| m[:version] == version}
35
+ migrations = DataMigrate::DatabaseTasks.pending_migrations.keep_if{|m| m[:version] == version}
85
36
 
86
37
  unless run_both || migrations.size < 2
87
38
  migrations = migrations.slice(0,1)
88
39
  end
89
40
 
90
41
  migrations.each do |migration|
91
- if migration[:kind] == :data
92
- ActiveRecord::Migration.write("== %s %s" % ['Data', "=" * 71])
93
- DataMigrate::DataMigrator.run(:up, "db/data/", migration[:version])
94
- else
95
- ActiveRecord::Migration.write("== %s %s" % ['Schema', "=" * 69])
96
- ActiveRecord::Migrator.run(:up, "db/migrate/", migration[:version])
97
- end
42
+ DataMigrate::DatabaseTasks.run_migration(migration, :up)
98
43
  end
44
+
45
+ Rake::Task["db:_dump"].invoke
46
+ Rake::Task["data:dump"].invoke
99
47
  end
100
48
  end
101
49
 
@@ -104,68 +52,27 @@ namespace :db do
104
52
  task :with_data => :environment do
105
53
  version = ENV["VERSION"] ? ENV["VERSION"].to_i : nil
106
54
  raise "VERSION is required" unless version
107
- assure_data_schema_table
55
+ DataMigrate::DataMigrator.create_data_schema_table
108
56
  run_both = ENV["BOTH"] == "true"
109
- migrations = past_migrations.keep_if{|m| m[:version] == version}
57
+ migrations = DataMigrate::DatabaseTasks.past_migrations.keep_if{|m| m[:version] == version}
110
58
 
111
59
  unless run_both || migrations.size < 2
112
60
  migrations = migrations.slice(0,1)
113
61
  end
114
62
 
115
63
  migrations.each do |migration|
116
- if migration[:kind] == :data
117
- ActiveRecord::Migration.write("== %s %s" % ['Data', "=" * 71])
118
- DataMigrate::DataMigrator.run(:down, "db/data/", migration[:version])
119
- else
120
- ActiveRecord::Migration.write("== %s %s" % ['Schema', "=" * 69])
121
- ActiveRecord::Migrator.run(:down, "db/migrate/", migration[:version])
122
- end
64
+ DataMigrate::DatabaseTasks.run_migration(migration, :down)
123
65
  end
66
+
67
+ Rake::Task["db:_dump"].invoke
68
+ Rake::Task["data:dump"].invoke
124
69
  end
125
70
  end
126
71
 
127
72
  namespace :status do
128
73
  desc "Display status of data and schema migrations"
129
74
  task :with_data => :environment do
130
- config = connect_to_database
131
- next unless config
132
-
133
- db_list_data = ActiveRecord::Base.connection.select_values("SELECT version FROM #{DataMigrate::DataMigrator.schema_migrations_table_name}")
134
- db_list_schema = ActiveRecord::Base.connection.select_values("SELECT version FROM #{ActiveRecord::Migrator.schema_migrations_table_name}")
135
- file_list = []
136
-
137
- Dir.foreach(File.join(Rails.root, 'db', 'data')) do |file|
138
- # only files matching "20091231235959_some_name.rb" pattern
139
- if match_data = /(\d{14})_(.+)\.rb/.match(file)
140
- status = db_list_data.delete(match_data[1]) ? 'up' : 'down'
141
- file_list << [status, match_data[1], match_data[2], 'data']
142
- end
143
- end
144
-
145
- Dir.foreach(File.join(Rails.root, 'db', 'migrate')) do |file|
146
- # only files matching "20091231235959_some_name.rb" pattern
147
- if match_data = /(\d{14})_(.+)\.rb/.match(file)
148
- status = db_list_schema.delete(match_data[1]) ? 'up' : 'down'
149
- file_list << [status, match_data[1], match_data[2], 'schema']
150
- end
151
- end
152
-
153
- file_list.sort!{|a,b| "#{a[1]}_#{a[3] == 'data' ? 1 : 0}" <=> "#{b[1]}_#{b[3] == 'data' ? 1 : 0}" }
154
-
155
- # output
156
- puts "\ndatabase: #{config['database']}\n\n"
157
- puts "#{"Status".center(8)} #{"Type".center(8)} #{"Migration ID".ljust(14)} Migration Name"
158
- puts "-" * 60
159
- file_list.each do |file|
160
- puts "#{file[0].center(8)} #{file[3].center(8)} #{file[1].ljust(14)} #{file[2].humanize}"
161
- end
162
- db_list_schema.each do |version|
163
- puts "#{'up'.center(8)} #{version.ljust(14)} *** NO SCHEMA FILE ***"
164
- end
165
- db_list_data.each do |version|
166
- puts "#{'up'.center(8)} #{version.ljust(14)} *** NO DATA FILE ***"
167
- end
168
- puts
75
+ DataMigrate::Tasks::DataMigrateTasks.status_with_schema
169
76
  end
170
77
  end
171
78
  end # END OF MIGRATE NAME SPACE
@@ -174,61 +81,91 @@ namespace :db do
174
81
  desc 'Rolls the schema back to the previous version (specify steps w/ STEP=n).'
175
82
  task :with_data => :environment do
176
83
  step = ENV['STEP'] ? ENV['STEP'].to_i : 1
177
- assure_data_schema_table
178
- past_migrations[0..(step - 1)].each do | past_migration |
179
- if past_migration[:kind] == :data
180
- ActiveRecord::Migration.write("== %s %s" % ['Data', "=" * 71])
181
- DataMigrate::DataMigrator.run(:down, "db/data/", past_migration[:version])
182
- elsif past_migration[:kind] == :schema
183
- ActiveRecord::Migration.write("== %s %s" % ['Schema', "=" * 69])
184
- ActiveRecord::Migrator.run(:down, "db/migrate/", past_migration[:version])
185
- end
84
+ DataMigrate::DataMigrator.create_data_schema_table
85
+ DataMigrate::DatabaseTasks.past_migrations[0..(step - 1)].each do | past_migration |
86
+ DataMigrate::DatabaseTasks.run_migration(past_migration, :down)
186
87
  end
88
+
89
+ Rake::Task["db:_dump"].invoke
90
+ Rake::Task["data:dump"].invoke
187
91
  end
188
92
  end
189
93
 
190
94
  namespace :forward do
191
95
  desc 'Pushes the schema to the next version (specify steps w/ STEP=n).'
192
96
  task :with_data => :environment do
193
- assure_data_schema_table
194
- # TODO: No worky for .forward
97
+ DataMigrate::DataMigrator.create_data_schema_table
195
98
  step = ENV['STEP'] ? ENV['STEP'].to_i : 1
196
- # DataMigrate::DataMigrator.forward('db/data/', step)
197
- migrations = pending_migrations.reverse.pop(step).reverse
198
- migrations.each do | pending_migration |
199
- if pending_migration[:kind] == :data
200
- ActiveRecord::Migration.write("== %s %s" % ['Data', "=" * 71])
201
- DataMigrate::DataMigrator.run(:up, "db/data/", pending_migration[:version])
202
- elsif pending_migration[:kind] == :schema
203
- ActiveRecord::Migration.write("== %s %s" % ['Schema', "=" * 69])
204
- ActiveRecord::Migrator.run(:up, "db/migrate/", pending_migration[:version])
205
- end
206
- end
99
+ DataMigrate::DatabaseTasks.forward(step)
100
+ Rake::Task["db:_dump"].invoke
101
+ Rake::Task["data:dump"].invoke
207
102
  end
208
103
  end
209
104
 
210
105
  namespace :version do
211
106
  desc "Retrieves the current schema version numbers for data and schema migrations"
212
107
  task :with_data => :environment do
213
- assure_data_schema_table
108
+ DataMigrate::DataMigrator.create_data_schema_table
214
109
  puts "Current Schema version: #{ActiveRecord::Migrator.current_version}"
215
110
  puts "Current Data version: #{DataMigrate::DataMigrator.current_version}"
216
111
  end
217
112
  end
113
+
114
+ namespace :abort_if_pending_migrations do
115
+ desc "Raises an error if there are pending migrations or data migrations"
116
+ task with_data: :environment do
117
+ message = %{Run `rake db:migrate:with_data` to update your database then try again.}
118
+ DataMigrate::Tasks::DataMigrateTasks.abort_if_pending_migrations(DataMigrate::DatabaseTasks.pending_migrations, message)
119
+ end
120
+ end
121
+
122
+ namespace :schema do
123
+ namespace :load do
124
+ desc "Load both schema.rb and data_schema.rb file into the database"
125
+ task with_data: :environment do
126
+ Rake::Task["db:schema:load"].invoke
127
+
128
+ DataMigrate::DatabaseTasks.load_schema_current(
129
+ :ruby,
130
+ ENV["DATA_SCHEMA"]
131
+ )
132
+ end
133
+ end
134
+ end
135
+
136
+ namespace :structure do
137
+ namespace :load do
138
+ desc "Load both structure.sql and data_schema.rb file into the database"
139
+ task with_data: :environment do
140
+ Rake::Task["db:structure:load"].invoke
141
+
142
+ DataMigrate::DatabaseTasks.load_schema_current(
143
+ :ruby,
144
+ ENV["DATA_SCHEMA"]
145
+ )
146
+ end
147
+ end
148
+ end
149
+
150
+ namespace :prepare do
151
+ desc "Runs setup if database does not exist, or runs data and schema migrations if it does"
152
+ task with_data: :environment do
153
+ DataMigrate::DatabaseTasks.prepare_all_with_data
154
+ end
155
+ end
218
156
  end
219
157
 
220
158
  namespace :data do
221
159
  desc 'Migrate data migrations (options: VERSION=x, VERBOSE=false)'
222
160
  task :migrate => :environment do
223
- assure_data_schema_table
224
- #ActiveRecord::Migration.verbose = ENV["VERBOSE"] ? ENV["VERBOSE"] == "true" : true
225
- DataMigrate::DataMigrator.migrate("db/data/", ENV["VERSION"] ? ENV["VERSION"].to_i : nil)
161
+ DataMigrate::Tasks::DataMigrateTasks.migrate
162
+ Rake::Task["data:dump"].invoke
226
163
  end
227
164
 
228
165
  namespace :migrate do
229
166
  desc 'Rollbacks the database one migration and re migrate up (options: STEP=x, VERSION=x).'
230
167
  task :redo => :environment do
231
- assure_data_schema_table
168
+ DataMigrate::DataMigrator.create_data_schema_table
232
169
  if ENV["VERSION"]
233
170
  Rake::Task["data:migrate:down"].invoke
234
171
  Rake::Task["data:migrate:up"].invoke
@@ -240,128 +177,78 @@ namespace :data do
240
177
 
241
178
  desc 'Runs the "up" for a given migration VERSION.'
242
179
  task :up => :environment do
243
- assure_data_schema_table
180
+ DataMigrate::DataMigrator.create_data_schema_table
244
181
  version = ENV["VERSION"] ? ENV["VERSION"].to_i : nil
245
182
  raise "VERSION is required" unless version
246
- DataMigrate::DataMigrator.run(:up, "db/data/", version)
183
+ DataMigrate::DataMigrator.run(:up, DataMigrate::DatabaseTasks.data_migrations_path, version)
184
+ Rake::Task["data:dump"].invoke
247
185
  end
248
186
 
249
187
  desc 'Runs the "down" for a given migration VERSION.'
250
188
  task :down => :environment do
251
189
  version = ENV["VERSION"] ? ENV["VERSION"].to_i : nil
252
190
  raise "VERSION is required" unless version
253
- assure_data_schema_table
254
- DataMigrate::DataMigrator.run(:down, "db/data/", version)
191
+ DataMigrate::DataMigrator.create_data_schema_table
192
+ DataMigrate::DataMigrator.run(:down, DataMigrate::DatabaseTasks.data_migrations_path, version)
193
+ Rake::Task["data:dump"].invoke
255
194
  end
256
195
 
257
196
  desc "Display status of data migrations"
258
197
  task :status => :environment do
259
- config = ActiveRecord::Base.configurations[Rails.env || 'development']
260
- ActiveRecord::Base.establish_connection(config)
261
- unless ActiveRecord::Base.connection.table_exists?(DataMigrate::DataMigrator.schema_migrations_table_name)
262
- puts 'Data migrations table does not exist yet.'
263
- next # means "return" for rake task
264
- end
265
- db_list = ActiveRecord::Base.connection.select_values("SELECT version FROM #{DataMigrate::DataMigrator.schema_migrations_table_name}")
266
- file_list = []
267
- Dir.foreach(File.join(Rails.root, 'db', 'data')) do |file|
268
- # only files matching "20091231235959_some_name.rb" pattern
269
- if match_data = /(\d{14})_(.+)\.rb/.match(file)
270
- status = db_list.delete(match_data[1]) ? 'up' : 'down'
271
- file_list << [status, match_data[1], match_data[2]]
272
- end
273
- end
274
- # output
275
- puts "\ndatabase: #{config['database']}\n\n"
276
- puts "#{"Status".center(8)} #{"Migration ID".ljust(14)} Migration Name"
277
- puts "-" * 50
278
- file_list.each do |file|
279
- puts "#{file[0].center(8)} #{file[1].ljust(14)} #{file[2].humanize}"
280
- end
281
- db_list.each do |version|
282
- puts "#{'up'.center(8)} #{version.ljust(14)} *** NO FILE ***"
283
- end
284
- puts
198
+ DataMigrate::Tasks::DataMigrateTasks.status
285
199
  end
286
200
  end
287
201
 
288
202
  desc 'Rolls the schema back to the previous version (specify steps w/ STEP=n).'
289
203
  task :rollback => :environment do
290
- assure_data_schema_table
204
+ DataMigrate::DataMigrator.create_data_schema_table
291
205
  step = ENV['STEP'] ? ENV['STEP'].to_i : 1
292
- DataMigrate::DataMigrator.rollback('db/data/', step)
206
+ DataMigrate::DataMigrator.rollback(DataMigrate::DatabaseTasks.data_migrations_path, step)
207
+ Rake::Task["data:dump"].invoke
293
208
  end
294
209
 
295
210
  desc 'Pushes the schema to the next version (specify steps w/ STEP=n).'
296
211
  task :forward => :environment do
297
- assure_data_schema_table
212
+ DataMigrate::DataMigrator.create_data_schema_table
298
213
  step = ENV['STEP'] ? ENV['STEP'].to_i : 1
299
214
  # TODO: No worky for .forward
300
215
  # DataMigrate::DataMigrator.forward('db/data/', step)
301
- migrations = pending_data_migrations.reverse.pop(step).reverse
216
+ migrations = DataMigrate::DatabaseTasks.pending_data_migrations.reverse.pop(step).reverse
302
217
  migrations.each do | pending_migration |
303
- DataMigrate::DataMigrator.run(:up, "db/data/", pending_migration[:version])
218
+ DataMigrate::DataMigrator.run(:up, DataMigrate::DatabaseTasks.data_migrations_path, pending_migration[:version])
304
219
  end
220
+ Rake::Task["data:dump"].invoke
305
221
  end
306
222
 
307
223
  desc "Retrieves the current schema version number for data migrations"
308
224
  task :version => :environment do
309
- assure_data_schema_table
225
+ DataMigrate::DataMigrator.create_data_schema_table
310
226
  puts "Current data version: #{DataMigrate::DataMigrator.current_version}"
311
227
  end
312
- end
313
-
314
- def pending_migrations
315
- sort_migrations pending_data_migrations, pending_schema_migrations
316
- end
317
-
318
- def pending_data_migrations
319
- data_migrations = DataMigrate::DataMigrator.migrations('db/data')
320
- sort_migrations DataMigrate::DataMigrator.new(:up, data_migrations ).
321
- pending_migrations.map{|m| { :version => m.version, :kind => :data }}
322
- end
323
-
324
- def pending_schema_migrations
325
- all_migrations = ActiveRecord::Migrator.migrations(Rails.application.config.paths["db/migrate"])
326
- sort_migrations(
327
- ActiveRecord::Migrator.new(:up, all_migrations).
328
- pending_migrations.
329
- map{|m| { :version => m.version, :kind => :schema }})
330
- end
331
-
332
- def sort_migrations set_1, set_2=nil
333
- migrations = set_1 + (set_2 || [])
334
- migrations.sort{|a,b| sort_string(a) <=> sort_string(b)}
335
- end
336
-
337
- def sort_string migration
338
- "#{migration[:version]}_#{migration[:kind] == :data ? 1 : 0}"
339
- end
340
-
341
- def connect_to_database
342
- config = ActiveRecord::Base.configurations[Rails.env || 'development']
343
- ActiveRecord::Base.establish_connection(config)
344
228
 
345
- unless ActiveRecord::Base.connection.table_exists?(DataMigrate::DataMigrator.schema_migrations_table_name)
346
- puts 'Data migrations table does not exist yet.'
347
- config = nil
229
+ desc "Raises an error if there are pending data migrations"
230
+ task abort_if_pending_migrations: :environment do
231
+ message = %{Run `rake data:migrate` to update your database then try again.}
232
+ DataMigrate::Tasks::DataMigrateTasks.abort_if_pending_migrations(DataMigrate::DatabaseTasks.pending_data_migrations, message)
348
233
  end
349
- unless ActiveRecord::Base.connection.table_exists?(ActiveRecord::Migrator.schema_migrations_table_name)
350
- puts 'Schema migrations table does not exist yet.'
351
- config = nil
352
- end
353
- config
354
- end
355
234
 
356
- def past_migrations sort=nil
357
- sort = sort.downcase if sort
358
- db_list_data = ActiveRecord::Base.connection.select_values("SELECT version FROM #{DataMigrate::DataMigrator.schema_migrations_table_name}").sort
359
- db_list_schema = ActiveRecord::Base.connection.select_values("SELECT version FROM #{ActiveRecord::Migrator.schema_migrations_table_name}").sort
360
- migrations = db_list_data.map{|d| {:version => d.to_i, :kind => :data }} + db_list_schema.map{|d| {:version => d.to_i, :kind => :schema }}
235
+ desc "Create a db/data_schema.rb file that stores the current data version"
236
+ task dump: :environment do
237
+ DataMigrate::Tasks::DataMigrateTasks.dump
361
238
 
362
- sort == 'asc' ? sort_migrations(migrations) : sort_migrations(migrations).reverse
363
- end
239
+ # Allow this task to be called as many times as required. An example
240
+ # is the migrate:redo task, which calls other two internally
241
+ # that depend on this one.
242
+ Rake::Task["data:dump"].reenable
243
+ end
364
244
 
365
- def assure_data_schema_table
366
- DataMigrate::DataMigrator.assure_data_schema_table
245
+ namespace :schema do
246
+ desc "Load data_schema.rb file into the database"
247
+ task load: :environment do
248
+ DataMigrate::DatabaseTasks.load_schema_current(
249
+ :ruby,
250
+ ENV["DATA_SCHEMA"]
251
+ )
252
+ end
253
+ end
367
254
  end
metadata CHANGED
@@ -1,30 +1,45 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: data_migrate
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.2.0
4
+ version: 11.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Andrew J Vargo
8
8
  - Ilya Katz
9
- autorequire:
9
+ - Deborah Enomah
10
+ autorequire:
10
11
  bindir: bin
11
12
  cert_chain: []
12
- date: 2017-08-06 00:00:00.000000000 Z
13
+ date: 2025-03-19 00:00:00.000000000 Z
13
14
  dependencies:
14
15
  - !ruby/object:Gem::Dependency
15
- name: rails
16
+ name: activerecord
16
17
  requirement: !ruby/object:Gem::Requirement
17
18
  requirements:
18
19
  - - ">="
19
20
  - !ruby/object:Gem::Version
20
- version: '4.0'
21
+ version: '6.1'
21
22
  type: :runtime
22
23
  prerelease: false
23
24
  version_requirements: !ruby/object:Gem::Requirement
24
25
  requirements:
25
26
  - - ">="
26
27
  - !ruby/object:Gem::Version
27
- version: '4.0'
28
+ version: '6.1'
29
+ - !ruby/object:Gem::Dependency
30
+ name: railties
31
+ requirement: !ruby/object:Gem::Requirement
32
+ requirements:
33
+ - - ">="
34
+ - !ruby/object:Gem::Version
35
+ version: '6.1'
36
+ type: :runtime
37
+ prerelease: false
38
+ version_requirements: !ruby/object:Gem::Requirement
39
+ requirements:
40
+ - - ">="
41
+ - !ruby/object:Gem::Version
42
+ version: '6.1'
28
43
  - !ruby/object:Gem::Dependency
29
44
  name: appraisal
30
45
  requirement: !ruby/object:Gem::Requirement
@@ -137,60 +152,73 @@ dependencies:
137
152
  - - ">="
138
153
  - !ruby/object:Gem::Version
139
154
  version: '0'
155
+ - !ruby/object:Gem::Dependency
156
+ name: rubocop
157
+ requirement: !ruby/object:Gem::Requirement
158
+ requirements:
159
+ - - ">="
160
+ - !ruby/object:Gem::Version
161
+ version: '0'
162
+ type: :development
163
+ prerelease: false
164
+ version_requirements: !ruby/object:Gem::Requirement
165
+ requirements:
166
+ - - ">="
167
+ - !ruby/object:Gem::Version
168
+ version: '0'
169
+ - !ruby/object:Gem::Dependency
170
+ name: overcommit
171
+ requirement: !ruby/object:Gem::Requirement
172
+ requirements:
173
+ - - ">="
174
+ - !ruby/object:Gem::Version
175
+ version: '0'
176
+ type: :development
177
+ prerelease: false
178
+ version_requirements: !ruby/object:Gem::Requirement
179
+ requirements:
180
+ - - ">="
181
+ - !ruby/object:Gem::Version
182
+ version: '0'
140
183
  description: Rake tasks to migrate data alongside schema changes.
141
184
  email:
142
185
  - ajvargo@computer.org
143
186
  - ilyakatz@gmail.com
187
+ - enomaomorogieva@gmail.com
144
188
  executables: []
145
189
  extensions: []
146
190
  extra_rdoc_files: []
147
191
  files:
148
- - ".gitignore"
149
- - ".rspec"
150
- - ".travis.yml"
151
- - Appraisals
152
192
  - Changelog.md
153
- - Gemfile
154
- - Gemfile.rails5
155
- - Gemfile.rails5.1
156
193
  - LICENSE
157
194
  - README.md
158
- - Rakefile
159
- - data_migrate.gemspec
160
- - gemfiles/rails_4.0.gemfile
161
- - gemfiles/rails_4.1.gemfile
162
- - gemfiles/rails_4.2.gemfile
163
- - gemfiles/rails_5.0.gemfile
164
- - gemfiles/rails_5.1.gemfile
165
195
  - lib/capistrano/data_migrate.rb
166
196
  - lib/capistrano/data_migrate/migrate.rb
167
197
  - lib/data_migrate.rb
198
+ - lib/data_migrate/config.rb
168
199
  - lib/data_migrate/data_migrator.rb
200
+ - lib/data_migrate/data_schema.rb
169
201
  - lib/data_migrate/data_schema_migration.rb
170
- - lib/data_migrate/migration.rb
171
- - lib/data_migrate/migration_five.rb
202
+ - lib/data_migrate/database_configurations_wrapper.rb
203
+ - lib/data_migrate/database_tasks.rb
204
+ - lib/data_migrate/migration_context.rb
205
+ - lib/data_migrate/rails_helper.rb
172
206
  - lib/data_migrate/railtie.rb
207
+ - lib/data_migrate/schema_dumper.rb
208
+ - lib/data_migrate/schema_migration.rb
209
+ - lib/data_migrate/status_service.rb
210
+ - lib/data_migrate/tasks/data_migrate_tasks.rb
173
211
  - lib/data_migrate/version.rb
174
212
  - lib/generators/data_migrate.rb
175
213
  - lib/generators/data_migration/data_migration_generator.rb
176
214
  - lib/generators/data_migration/templates/data_migration.rb
177
215
  - lib/generators/data_migration/templates/migration.rb
178
- - screenshot.png
179
- - spec/data_migrate/data_migrator_spec.rb
180
- - spec/data_migrate/data_schema_migration_spec.rb
181
- - spec/data_migrate/migration.rb
182
- - spec/generators/data_migration/data_migration_generator_spec.rb
183
- - spec/spec_helper.rb
184
- - tasks/.gitkeep
185
216
  - tasks/databases.rake
186
217
  homepage: https://github.com/ilyakatz/data-migrate
187
218
  licenses:
188
219
  - MIT
189
220
  metadata: {}
190
- post_install_message: |
191
- ********************************************************************************
192
- data-migrate: --skip-schema-migration option is no longer available as of version 3.0.0
193
- ********************************************************************************
221
+ post_install_message:
194
222
  rdoc_options: []
195
223
  require_paths:
196
224
  - lib
@@ -205,14 +233,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
205
233
  - !ruby/object:Gem::Version
206
234
  version: '0'
207
235
  requirements: []
208
- rubyforge_project: data_migrate
209
- rubygems_version: 2.5.1
210
- signing_key:
236
+ rubygems_version: 3.4.19
237
+ signing_key:
211
238
  specification_version: 4
212
239
  summary: Rake tasks to migrate data alongside schema changes.
213
- test_files:
214
- - spec/data_migrate/data_migrator_spec.rb
215
- - spec/data_migrate/data_schema_migration_spec.rb
216
- - spec/data_migrate/migration.rb
217
- - spec/generators/data_migration/data_migration_generator_spec.rb
218
- - spec/spec_helper.rb
240
+ test_files: []
data/.gitignore DELETED
@@ -1,6 +0,0 @@
1
-
2
- /.rvmrc
3
- *.gem
4
- *.lock
5
- gemfiles/.bundle
6
- spec/db
data/.rspec DELETED
@@ -1,3 +0,0 @@
1
- --color
2
- --format d
3
-
data/.travis.yml DELETED
@@ -1,17 +0,0 @@
1
- language: ruby
2
- rvm:
3
- - 2.2.6
4
- - 2.3.4
5
- script: bundle exec rspec
6
- gemfile:
7
- - gemfiles/rails_4.0.gemfile
8
- - gemfiles/rails_4.1.gemfile
9
- - gemfiles/rails_4.2.gemfile
10
- - gemfiles/rails_5.0.gemfile
11
- - gemfiles/rails_5.1.gemfile
12
- matrix:
13
- exclude:
14
- - rvm: 2.0.0-p648
15
- gemfile: gemfiles/rails_5.0.gemfile
16
- - rvm: 2.1.10
17
- gemfile: gemfiles/rails_5.0.gemfile