data_migrate 8.3.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 (75) hide show
  1. checksums.yaml +4 -4
  2. data/Changelog.md +92 -0
  3. data/README.md +32 -19
  4. data/lib/data_migrate/config.rb +11 -1
  5. data/lib/data_migrate/{data_migrator_five.rb → data_migrator.rb} +15 -35
  6. data/lib/data_migrate/data_schema.rb +8 -8
  7. data/lib/data_migrate/data_schema_migration.rb +24 -7
  8. data/lib/data_migrate/database_configurations_wrapper.rb +11 -0
  9. data/lib/data_migrate/database_tasks.rb +233 -69
  10. data/lib/data_migrate/migration_context.rb +11 -8
  11. data/lib/data_migrate/rails_helper.rb +91 -0
  12. data/lib/data_migrate/schema_dumper.rb +1 -1
  13. data/lib/data_migrate/{schema_migration_six.rb → schema_migration.rb} +7 -4
  14. data/lib/data_migrate/{status_service_five.rb → status_service.rb} +14 -8
  15. data/lib/data_migrate/tasks/data_migrate_tasks.rb +24 -43
  16. data/lib/data_migrate/version.rb +1 -1
  17. data/lib/data_migrate.rb +8 -9
  18. data/lib/generators/data_migrate.rb +15 -2
  19. data/lib/generators/data_migration/data_migration_generator.rb +7 -2
  20. data/tasks/databases.rake +36 -121
  21. metadata +19 -77
  22. data/.github/workflows/gempush.yml +0 -29
  23. data/.gitignore +0 -11
  24. data/.hound.yml +0 -4
  25. data/.overcommit.yml +0 -21
  26. data/.rbenv-gemsets +0 -2
  27. data/.rspec +0 -3
  28. data/.rubocop.yml +0 -2
  29. data/.ruby-style.yml +0 -1061
  30. data/.ruby-version +0 -1
  31. data/.travis.yml +0 -14
  32. data/Appraisals +0 -15
  33. data/Gemfile +0 -4
  34. data/Gemfile.rails5.2 +0 -10
  35. data/Gemfile.rails6.1 +0 -11
  36. data/Rakefile +0 -2
  37. data/data_migrate.gemspec +0 -50
  38. data/gemfiles/rails_5.2.gemfile +0 -8
  39. data/gemfiles/rails_6.0.gemfile +0 -8
  40. data/gemfiles/rails_6.1.gemfile +0 -8
  41. data/gemfiles/rails_7.0.gemfile +0 -8
  42. data/lib/data_migrate/legacy_migrator.rb +0 -22
  43. data/lib/data_migrate/schema_migration_five.rb +0 -31
  44. data/screenshot.png +0 -0
  45. data/spec/data_migrate/config_spec.rb +0 -27
  46. data/spec/data_migrate/data_migrator_spec.rb +0 -101
  47. data/spec/data_migrate/data_schema_migration_spec.rb +0 -16
  48. data/spec/data_migrate/data_spec.rb +0 -85
  49. data/spec/data_migrate/database_tasks_spec.rb +0 -138
  50. data/spec/data_migrate/legacy_migrator_spec.rb +0 -50
  51. data/spec/data_migrate/migration.rb +0 -19
  52. data/spec/data_migrate/migration_context_spec.rb +0 -127
  53. data/spec/data_migrate/schema_dumper_spec.rb +0 -46
  54. data/spec/data_migrate/schema_migration_spec.rb +0 -99
  55. data/spec/data_migrate/status_service_spec.rb +0 -102
  56. data/spec/data_migrate/tasks/data_migrate_tasks_spec.rb +0 -164
  57. data/spec/db/6.0/20091231235959_some_name.rb +0 -9
  58. data/spec/db/6.0/20171231235959_super_update.rb +0 -9
  59. data/spec/db/data/20091231235959_some_name.rb +0 -9
  60. data/spec/db/data/20171231235959_super_update.rb +0 -9
  61. data/spec/db/data/20181128000207_excluded_file.rb.other_ext +0 -1
  62. data/spec/db/data/partial_schema/data_schema.rb +0 -1
  63. data/spec/db/data/partial_schema/test_data_schema.rb +0 -1
  64. data/spec/db/data/schema/data_schema.rb +0 -1
  65. data/spec/db/data/schema/test_data_schema.rb +0 -1
  66. data/spec/db/data-6.0/20091231235959_some_name.rb +0 -9
  67. data/spec/db/data-6.0/20171231235959_super_update.rb +0 -9
  68. data/spec/db/data-6.0/20181128000207_excluded_file.rb.other_ext +0 -1
  69. data/spec/db/migrate/5.2/20131111111111_late_migration.rb +0 -9
  70. data/spec/db/migrate/5.2/20202020202011_db_migration.rb +0 -9
  71. data/spec/db/migrate/6.0/20131111111111_late_migration.rb +0 -9
  72. data/spec/db/migrate/6.0/20202020202011_db_migration.rb +0 -9
  73. data/spec/generators/data_migration/data_migration_generator_spec.rb +0 -60
  74. data/spec/spec_helper.rb +0 -34
  75. data/tasks/.gitkeep +0 -0
@@ -1,14 +1,12 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module DataMigrate
2
4
  module Tasks
3
5
  module DataMigrateTasks
4
6
  extend self
5
7
 
6
- def schema_migrations_path
7
- File.join('db', 'migrate')
8
- end
9
-
10
8
  def migrations_paths
11
- @migrations_paths ||= DataMigrate.config.data_migrations_path
9
+ @migrations_paths ||= Array.wrap(DataMigrate.config.data_migrations_path)
12
10
  end
13
11
 
14
12
  def dump
@@ -24,13 +22,13 @@ module DataMigrate
24
22
  def migrate
25
23
  target_version = ENV["VERSION"] ? ENV["VERSION"].to_i : nil
26
24
 
27
- DataMigrate::DataMigrator.assure_data_schema_table
25
+ DataMigrate::DataMigrator.create_data_schema_table
28
26
  DataMigrate::MigrationContext.new(migrations_paths).migrate(target_version)
29
27
  end
30
28
 
31
29
  def abort_if_pending_migrations(migrations, message)
32
30
  if migrations.any?
33
- puts "You have #{migrations.size} pending #{migrations.size > 1 ? 'migrations:' : 'migration:'}"
31
+ puts "You have #{migrations.size} pending #{'migration'.pluralize(migrations.size)}:"
34
32
  migrations.each do |pending_migration|
35
33
  puts " %4d %s" % [pending_migration[:version], pending_migration[:name]]
36
34
  end
@@ -47,35 +45,29 @@ module DataMigrate
47
45
  end
48
46
 
49
47
  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)
48
+ DataMigrate::StatusService.dump
56
49
  end
57
50
 
58
51
  def status_with_schema
59
- config = connect_to_database
60
- return unless config
61
-
62
52
  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}"
53
+ "SELECT version FROM #{DataMigrate::RailsHelper.data_schema_migration.table_name}"
67
54
  )
55
+ db_list_schema = DataMigrate::RailsHelper.schema_migration_versions
68
56
  file_list = []
69
57
 
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']
58
+ migrations_paths.each do |path|
59
+ Dir.foreach(File.join(Rails.root, path)) do |file|
60
+ # only files matching "20091231235959_some_name.rb" pattern
61
+ if match_data = /(\d{14})_(.+)\.rb/.match(file)
62
+ status = db_list_data.delete(match_data[1]) ? 'up' : 'down'
63
+ file_list << [status, match_data[1], match_data[2], 'data']
64
+ end
75
65
  end
76
66
  end
77
67
 
78
- Dir.foreach(File.join(Rails.root, schema_migrations_path)) do |file|
68
+ DataMigrate::SchemaMigration.migrations_paths.map do |path|
69
+ Dir.children(path) if Dir.exist?(path)
70
+ end.flatten.compact.each do |file|
79
71
  # only files matching "20091231235959_some_name.rb" pattern
80
72
  if match_data = /(\d{14})_(.+)\.rb/.match(file)
81
73
  status = db_list_schema.delete(match_data[1]) ? 'up' : 'down'
@@ -86,7 +78,7 @@ module DataMigrate
86
78
  file_list.sort!{|a,b| "#{a[1]}_#{a[3] == 'data' ? 1 : 0}" <=> "#{b[1]}_#{b[3] == 'data' ? 1 : 0}" }
87
79
 
88
80
  # output
89
- puts "\ndatabase: #{config['database']}\n\n"
81
+ puts "\ndatabase: #{database_name}\n\n"
90
82
  puts "#{"Status".center(8)} #{"Type".center(8)} #{"Migration ID".ljust(14)} Migration Name"
91
83
  puts "-" * 60
92
84
  file_list.each do |file|
@@ -103,23 +95,12 @@ module DataMigrate
103
95
 
104
96
  private
105
97
 
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
98
+ def database_name
99
+ if Gem::Dependency.new("railties", "~> 7.0").match?("railties", Gem.loaded_specs["railties"].version)
100
+ ActiveRecord::Base.connection_db_config.database
101
+ elsif Gem::Dependency.new("railties", "~> 6.1").match?("railties", Gem.loaded_specs["railties"].version)
102
+ ActiveRecord::Base.connection_config[:database]
121
103
  end
122
- config
123
104
  end
124
105
  end
125
106
  end
@@ -1,3 +1,3 @@
1
1
  module DataMigrate
2
- VERSION = "8.3.0".freeze
2
+ VERSION = "11.3.0".freeze
3
3
  end
data/lib/data_migrate.rb CHANGED
@@ -1,22 +1,21 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require File.join(File.dirname(__FILE__), "data_migrate", "data_migrator_five")
3
+ require File.join(File.dirname(__FILE__), "data_migrate", "rails_helper")
4
+ require File.join(File.dirname(__FILE__), "data_migrate", "data_migrator")
4
5
  require File.join(File.dirname(__FILE__), "data_migrate", "data_schema_migration")
5
6
  require File.join(File.dirname(__FILE__), "data_migrate", "data_schema")
6
7
  require File.join(File.dirname(__FILE__), "data_migrate", "database_tasks")
7
8
  require File.join(File.dirname(__FILE__), "data_migrate", "schema_dumper")
8
- require File.join(File.dirname(__FILE__), "data_migrate", "status_service_five")
9
+ require File.join(File.dirname(__FILE__), "data_migrate", "status_service")
9
10
  require File.join(File.dirname(__FILE__), "data_migrate", "migration_context")
10
11
  require File.join(File.dirname(__FILE__), "data_migrate", "railtie")
11
12
  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
-
15
- if Rails::VERSION::MAJOR == 5
16
- require File.join(File.dirname(__FILE__), "data_migrate", "schema_migration_five")
17
- else
18
- require File.join(File.dirname(__FILE__), "data_migrate", "schema_migration_six")
19
- end
14
+ require File.join(File.dirname(__FILE__), "data_migrate", "schema_migration")
15
+ require File.join(File.dirname(__FILE__), "data_migrate", "database_configurations_wrapper")
20
16
 
21
17
  module DataMigrate
18
+ def self.root
19
+ File.dirname(__FILE__)
20
+ end
22
21
  end
@@ -1,9 +1,22 @@
1
1
  require 'rails/generators/named_base'
2
+
2
3
  module DataMigrate
3
4
  module Generators
4
5
  class DataMigrationGenerator < Rails::Generators::NamedBase #:nodoc:
5
- def self.source_root
6
- @_data_migrate_source_root ||= File.expand_path(File.join(File.dirname(__FILE__), generator_name, 'templates'))
6
+ class << self
7
+ def source_root
8
+ build_data_migrate_source_root
9
+ end
10
+
11
+ private
12
+
13
+ def build_data_migrate_source_root
14
+ if DataMigrate.config.data_template_path == DataMigrate::Config::DEFAULT_DATA_TEMPLATE_PATH
15
+ File.expand_path(File.join(File.dirname(__FILE__), generator_name, 'templates'))
16
+ else
17
+ File.expand_path(File.dirname(DataMigrate.config.data_template_path))
18
+ end
19
+ end
7
20
  end
8
21
  end
9
22
  end
@@ -14,7 +14,7 @@ module DataMigrate
14
14
 
15
15
  def create_data_migration
16
16
  set_local_assigns!
17
- migration_template "data_migration.rb", data_migrations_file_path
17
+ migration_template template_path, data_migrations_file_path
18
18
  end
19
19
 
20
20
  protected
@@ -26,6 +26,10 @@ module DataMigrate
26
26
  end
27
27
  end
28
28
 
29
+ def template_path
30
+ DataMigrate.config.data_template_path
31
+ end
32
+
29
33
  def migration_base_class_name
30
34
  "ActiveRecord::Migration[#{ActiveRecord::Migration.current_version}]"
31
35
  end
@@ -34,8 +38,9 @@ module DataMigrate
34
38
  File.join(data_migrations_path, "#{file_name}.rb")
35
39
  end
36
40
 
41
+ # Use the first path in the data_migrations_path as the target directory
37
42
  def data_migrations_path
38
- DataMigrate.config.data_migrations_path
43
+ Array.wrap(DataMigrate.config.data_migrations_path).first
39
44
  end
40
45
  end
41
46
  end
data/tasks/databases.rake CHANGED
@@ -1,54 +1,12 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'data_migrate/tasks/data_migrate_tasks'
2
4
 
3
5
  namespace :db do
4
6
  namespace :migrate do
5
7
  desc "Migrate the database data and schema (options: VERSION=x, VERBOSE=false)."
6
- task :with_data => :environment do
7
- assure_data_schema_table
8
-
9
- ActiveRecord::Migration.verbose = ENV["VERBOSE"] ? ENV["VERBOSE"] == "true" : true
10
- target_version = ENV["VERSION"] ? ENV["VERSION"].to_i : nil
11
- migrations = []
12
-
13
- if target_version.nil?
14
- migrations = pending_migrations.map{ |m| m.merge(:direction =>:up) }
15
- else
16
- current_schema_version = ActiveRecord::Migrator.current_version
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) }
19
- elsif target_version < current_schema_version
20
- past_migrations.keep_if{ |m| m[:version] > target_version }.map{ |m| m.merge(:direction =>:down) }
21
- else # ==
22
- []
23
- end
24
-
25
- current_data_version = ActiveRecord::Migrator.current_version
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) }
28
- elsif target_version < current_data_version
29
- past_migrations.keep_if{ |m| m[:version] > target_version }.map{ |m| m.merge(:direction =>:down) }
30
- else # ==
31
- []
32
- end
33
- migrations = if schema_migrations.empty?
34
- data_migrations
35
- elsif data_migrations.empty?
36
- schema_migrations
37
- elsif target_version > current_data_version && target_version > current_schema_version
38
- sort_migrations data_migrations, schema_migrations
39
- elsif target_version < current_data_version && target_version < current_schema_version
40
- sort_migrations(data_migrations, schema_migrations).reverse
41
- elsif target_version > current_data_version && target_version < current_schema_version
42
- schema_migrations + data_migrations
43
- elsif target_version < current_data_version && target_version > current_schema_version
44
- schema_migrations + data_migrations
45
- end
46
- end
47
-
48
- migrations.each do |migration|
49
- run_migration(migration, migration[:direction])
50
- end
51
-
8
+ task :with_data => :load_config do
9
+ DataMigrate::DatabaseTasks.migrate_with_data
52
10
  Rake::Task["db:_dump"].invoke
53
11
  Rake::Task["data:dump"].invoke
54
12
  end
@@ -56,7 +14,7 @@ namespace :db do
56
14
  namespace :redo do
57
15
  desc 'Rollbacks the database one migration and re migrate up (options: STEP=x, VERSION=x).'
58
16
  task :with_data => :environment do
59
- assure_data_schema_table
17
+ DataMigrate::DataMigrator.create_data_schema_table
60
18
  if ENV["VERSION"]
61
19
  Rake::Task["db:migrate:down:with_data"].invoke
62
20
  Rake::Task["db:migrate:up:with_data"].invoke
@@ -72,16 +30,16 @@ namespace :db do
72
30
  task :with_data => :environment do
73
31
  version = ENV["VERSION"] ? ENV["VERSION"].to_i : nil
74
32
  raise "VERSION is required" unless version
75
- assure_data_schema_table
33
+ DataMigrate::DataMigrator.create_data_schema_table
76
34
  run_both = ENV["BOTH"] == "true"
77
- migrations = pending_migrations.keep_if{|m| m[:version] == version}
35
+ migrations = DataMigrate::DatabaseTasks.pending_migrations.keep_if{|m| m[:version] == version}
78
36
 
79
37
  unless run_both || migrations.size < 2
80
38
  migrations = migrations.slice(0,1)
81
39
  end
82
40
 
83
41
  migrations.each do |migration|
84
- run_migration(migration, :up)
42
+ DataMigrate::DatabaseTasks.run_migration(migration, :up)
85
43
  end
86
44
 
87
45
  Rake::Task["db:_dump"].invoke
@@ -94,16 +52,16 @@ namespace :db do
94
52
  task :with_data => :environment do
95
53
  version = ENV["VERSION"] ? ENV["VERSION"].to_i : nil
96
54
  raise "VERSION is required" unless version
97
- assure_data_schema_table
55
+ DataMigrate::DataMigrator.create_data_schema_table
98
56
  run_both = ENV["BOTH"] == "true"
99
- migrations = past_migrations.keep_if{|m| m[:version] == version}
57
+ migrations = DataMigrate::DatabaseTasks.past_migrations.keep_if{|m| m[:version] == version}
100
58
 
101
59
  unless run_both || migrations.size < 2
102
60
  migrations = migrations.slice(0,1)
103
61
  end
104
62
 
105
63
  migrations.each do |migration|
106
- run_migration(migration, :down)
64
+ DataMigrate::DatabaseTasks.run_migration(migration, :down)
107
65
  end
108
66
 
109
67
  Rake::Task["db:_dump"].invoke
@@ -123,9 +81,9 @@ namespace :db do
123
81
  desc 'Rolls the schema back to the previous version (specify steps w/ STEP=n).'
124
82
  task :with_data => :environment do
125
83
  step = ENV['STEP'] ? ENV['STEP'].to_i : 1
126
- assure_data_schema_table
127
- past_migrations[0..(step - 1)].each do | past_migration |
128
- run_migration(past_migration, :down)
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)
129
87
  end
130
88
 
131
89
  Rake::Task["db:_dump"].invoke
@@ -136,7 +94,7 @@ namespace :db do
136
94
  namespace :forward do
137
95
  desc 'Pushes the schema to the next version (specify steps w/ STEP=n).'
138
96
  task :with_data => :environment do
139
- assure_data_schema_table
97
+ DataMigrate::DataMigrator.create_data_schema_table
140
98
  step = ENV['STEP'] ? ENV['STEP'].to_i : 1
141
99
  DataMigrate::DatabaseTasks.forward(step)
142
100
  Rake::Task["db:_dump"].invoke
@@ -147,7 +105,7 @@ namespace :db do
147
105
  namespace :version do
148
106
  desc "Retrieves the current schema version numbers for data and schema migrations"
149
107
  task :with_data => :environment do
150
- assure_data_schema_table
108
+ DataMigrate::DataMigrator.create_data_schema_table
151
109
  puts "Current Schema version: #{ActiveRecord::Migrator.current_version}"
152
110
  puts "Current Data version: #{DataMigrate::DataMigrator.current_version}"
153
111
  end
@@ -157,7 +115,7 @@ namespace :db do
157
115
  desc "Raises an error if there are pending migrations or data migrations"
158
116
  task with_data: :environment do
159
117
  message = %{Run `rake db:migrate:with_data` to update your database then try again.}
160
- DataMigrate::Tasks::DataMigrateTasks.abort_if_pending_migrations(pending_migrations, message)
118
+ DataMigrate::Tasks::DataMigrateTasks.abort_if_pending_migrations(DataMigrate::DatabaseTasks.pending_migrations, message)
161
119
  end
162
120
  end
163
121
 
@@ -188,6 +146,13 @@ namespace :db do
188
146
  end
189
147
  end
190
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
191
156
  end
192
157
 
193
158
  namespace :data do
@@ -200,7 +165,7 @@ namespace :data do
200
165
  namespace :migrate do
201
166
  desc 'Rollbacks the database one migration and re migrate up (options: STEP=x, VERSION=x).'
202
167
  task :redo => :environment do
203
- assure_data_schema_table
168
+ DataMigrate::DataMigrator.create_data_schema_table
204
169
  if ENV["VERSION"]
205
170
  Rake::Task["data:migrate:down"].invoke
206
171
  Rake::Task["data:migrate:up"].invoke
@@ -212,10 +177,10 @@ namespace :data do
212
177
 
213
178
  desc 'Runs the "up" for a given migration VERSION.'
214
179
  task :up => :environment do
215
- assure_data_schema_table
180
+ DataMigrate::DataMigrator.create_data_schema_table
216
181
  version = ENV["VERSION"] ? ENV["VERSION"].to_i : nil
217
182
  raise "VERSION is required" unless version
218
- DataMigrate::DataMigrator.run(:up, data_migrations_path, version)
183
+ DataMigrate::DataMigrator.run(:up, DataMigrate::DatabaseTasks.data_migrations_path, version)
219
184
  Rake::Task["data:dump"].invoke
220
185
  end
221
186
 
@@ -223,8 +188,8 @@ namespace :data do
223
188
  task :down => :environment do
224
189
  version = ENV["VERSION"] ? ENV["VERSION"].to_i : nil
225
190
  raise "VERSION is required" unless version
226
- assure_data_schema_table
227
- DataMigrate::DataMigrator.run(:down, data_migrations_path, version)
191
+ DataMigrate::DataMigrator.create_data_schema_table
192
+ DataMigrate::DataMigrator.run(:down, DataMigrate::DatabaseTasks.data_migrations_path, version)
228
193
  Rake::Task["data:dump"].invoke
229
194
  end
230
195
 
@@ -236,35 +201,35 @@ namespace :data do
236
201
 
237
202
  desc 'Rolls the schema back to the previous version (specify steps w/ STEP=n).'
238
203
  task :rollback => :environment do
239
- assure_data_schema_table
204
+ DataMigrate::DataMigrator.create_data_schema_table
240
205
  step = ENV['STEP'] ? ENV['STEP'].to_i : 1
241
- DataMigrate::DataMigrator.rollback(data_migrations_path, step)
206
+ DataMigrate::DataMigrator.rollback(DataMigrate::DatabaseTasks.data_migrations_path, step)
242
207
  Rake::Task["data:dump"].invoke
243
208
  end
244
209
 
245
210
  desc 'Pushes the schema to the next version (specify steps w/ STEP=n).'
246
211
  task :forward => :environment do
247
- assure_data_schema_table
212
+ DataMigrate::DataMigrator.create_data_schema_table
248
213
  step = ENV['STEP'] ? ENV['STEP'].to_i : 1
249
214
  # TODO: No worky for .forward
250
215
  # DataMigrate::DataMigrator.forward('db/data/', step)
251
- migrations = pending_data_migrations.reverse.pop(step).reverse
216
+ migrations = DataMigrate::DatabaseTasks.pending_data_migrations.reverse.pop(step).reverse
252
217
  migrations.each do | pending_migration |
253
- DataMigrate::DataMigrator.run(:up, data_migrations_path, pending_migration[:version])
218
+ DataMigrate::DataMigrator.run(:up, DataMigrate::DatabaseTasks.data_migrations_path, pending_migration[:version])
254
219
  end
255
220
  Rake::Task["data:dump"].invoke
256
221
  end
257
222
 
258
223
  desc "Retrieves the current schema version number for data migrations"
259
224
  task :version => :environment do
260
- assure_data_schema_table
225
+ DataMigrate::DataMigrator.create_data_schema_table
261
226
  puts "Current data version: #{DataMigrate::DataMigrator.current_version}"
262
227
  end
263
228
 
264
229
  desc "Raises an error if there are pending data migrations"
265
230
  task abort_if_pending_migrations: :environment do
266
231
  message = %{Run `rake data:migrate` to update your database then try again.}
267
- DataMigrate::Tasks::DataMigrateTasks.abort_if_pending_migrations(pending_data_migrations, message)
232
+ DataMigrate::Tasks::DataMigrateTasks.abort_if_pending_migrations(DataMigrate::DatabaseTasks.pending_data_migrations, message)
268
233
  end
269
234
 
270
235
  desc "Create a db/data_schema.rb file that stores the current data version"
@@ -287,53 +252,3 @@ namespace :data do
287
252
  end
288
253
  end
289
254
  end
290
-
291
- def pending_migrations
292
- DataMigrate::DatabaseTasks.sort_migrations(
293
- DataMigrate::DatabaseTasks.pending_schema_migrations,
294
- DataMigrate::DatabaseTasks.pending_data_migrations
295
- )
296
- end
297
-
298
- def pending_data_migrations
299
- DataMigrate::DatabaseTasks.pending_data_migrations
300
- end
301
-
302
- def pending_schema_migrations
303
- DataMigrate::DatabaseTasks.pending_schema_migrations
304
- end
305
-
306
- def sort_migrations set_1, set_2=nil
307
- migrations = set_1 + (set_2 || [])
308
- migrations.sort{|a,b| sort_string(a) <=> sort_string(b)}
309
- end
310
-
311
- def sort_string migration
312
- "#{migration[:version]}_#{migration[:kind] == :data ? 1 : 0}"
313
- end
314
-
315
- def past_migrations(sort=nil)
316
- DataMigrate::DatabaseTasks.past_migrations(sort)
317
- end
318
-
319
- def assure_data_schema_table
320
- DataMigrate::DataMigrator.assure_data_schema_table
321
- end
322
-
323
- def data_migrations_path
324
- DataMigrate.config.data_migrations_path
325
- end
326
-
327
- def run_migration(migration, direction)
328
- if migration[:kind] == :data
329
- ActiveRecord::Migration.write("== %s %s" % ['Data', "=" * 71])
330
- DataMigrate::DataMigrator.run(direction, data_migrations_path, migration[:version])
331
- else
332
- ActiveRecord::Migration.write("== %s %s" % ['Schema', "=" * 69])
333
- DataMigrate::SchemaMigration.run(
334
- direction,
335
- DataMigrate::SchemaMigration.migrations_paths,
336
- migration[:version]
337
- )
338
- end
339
- end