data_migrate 8.1.1 → 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.
- checksums.yaml +4 -4
- data/Changelog.md +100 -0
- data/README.md +42 -8
- data/lib/data_migrate/config.rb +11 -1
- data/lib/data_migrate/{data_migrator_five.rb → data_migrator.rb} +15 -35
- data/lib/data_migrate/data_schema.rb +8 -8
- data/lib/data_migrate/data_schema_migration.rb +21 -5
- data/lib/data_migrate/database_configurations_wrapper.rb +11 -0
- data/lib/data_migrate/database_tasks.rb +233 -69
- data/lib/data_migrate/migration_context.rb +11 -8
- data/lib/data_migrate/rails_helper.rb +91 -0
- data/lib/data_migrate/schema_dumper.rb +1 -1
- data/lib/data_migrate/{schema_migration_six.rb → schema_migration.rb} +7 -4
- data/lib/data_migrate/{status_service_five.rb → status_service.rb} +14 -8
- data/lib/data_migrate/tasks/data_migrate_tasks.rb +24 -43
- data/lib/data_migrate/version.rb +1 -1
- data/lib/data_migrate.rb +8 -9
- data/lib/generators/data_migrate.rb +15 -2
- data/lib/generators/data_migration/data_migration_generator.rb +7 -2
- data/tasks/databases.rake +36 -121
- metadata +19 -77
- data/.github/workflows/gempush.yml +0 -29
- data/.gitignore +0 -11
- data/.hound.yml +0 -4
- data/.overcommit.yml +0 -21
- data/.rbenv-gemsets +0 -2
- data/.rspec +0 -3
- data/.rubocop.yml +0 -2
- data/.ruby-style.yml +0 -1061
- data/.ruby-version +0 -1
- data/.travis.yml +0 -14
- data/Appraisals +0 -15
- data/Gemfile +0 -4
- data/Gemfile.rails5.2 +0 -10
- data/Gemfile.rails6.1 +0 -11
- data/Rakefile +0 -2
- data/data_migrate.gemspec +0 -50
- data/gemfiles/rails_5.2.gemfile +0 -8
- data/gemfiles/rails_6.0.gemfile +0 -8
- data/gemfiles/rails_6.1.gemfile +0 -8
- data/gemfiles/rails_7.0.gemfile +0 -8
- data/lib/data_migrate/legacy_migrator.rb +0 -22
- data/lib/data_migrate/schema_migration_five.rb +0 -31
- data/screenshot.png +0 -0
- data/spec/data_migrate/config_spec.rb +0 -27
- data/spec/data_migrate/data_migrator_spec.rb +0 -101
- data/spec/data_migrate/data_schema_migration_spec.rb +0 -16
- data/spec/data_migrate/data_spec.rb +0 -85
- data/spec/data_migrate/database_tasks_spec.rb +0 -138
- data/spec/data_migrate/legacy_migrator_spec.rb +0 -50
- data/spec/data_migrate/migration.rb +0 -19
- data/spec/data_migrate/migration_context_spec.rb +0 -127
- data/spec/data_migrate/schema_dumper_spec.rb +0 -46
- data/spec/data_migrate/schema_migration_spec.rb +0 -99
- data/spec/data_migrate/status_service_spec.rb +0 -102
- data/spec/data_migrate/tasks/data_migrate_tasks_spec.rb +0 -164
- data/spec/db/6.0/20091231235959_some_name.rb +0 -9
- data/spec/db/6.0/20171231235959_super_update.rb +0 -9
- data/spec/db/data/20091231235959_some_name.rb +0 -9
- data/spec/db/data/20171231235959_super_update.rb +0 -9
- data/spec/db/data/20181128000207_excluded_file.rb.other_ext +0 -1
- data/spec/db/data/partial_schema/data_schema.rb +0 -1
- data/spec/db/data/partial_schema/test_data_schema.rb +0 -1
- data/spec/db/data/schema/data_schema.rb +0 -1
- data/spec/db/data/schema/test_data_schema.rb +0 -1
- data/spec/db/data-6.0/20091231235959_some_name.rb +0 -9
- data/spec/db/data-6.0/20171231235959_super_update.rb +0 -9
- data/spec/db/data-6.0/20181128000207_excluded_file.rb.other_ext +0 -1
- data/spec/db/migrate/5.2/20131111111111_late_migration.rb +0 -9
- data/spec/db/migrate/5.2/20202020202011_db_migration.rb +0 -9
- data/spec/db/migrate/6.0/20131111111111_late_migration.rb +0 -9
- data/spec/db/migrate/6.0/20202020202011_db_migration.rb +0 -9
- data/spec/generators/data_migration/data_migration_generator_spec.rb +0 -60
- data/spec/spec_helper.rb +0 -34
- 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.
|
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
|
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
|
-
|
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::
|
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
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
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
|
-
|
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: #{
|
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
|
107
|
-
|
108
|
-
ActiveRecord::Base.
|
109
|
-
|
110
|
-
ActiveRecord::Base.
|
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
|
data/lib/data_migrate/version.rb
CHANGED
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", "
|
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", "
|
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
|
-
|
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
|
-
|
6
|
-
|
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
|
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 => :
|
7
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|