data_migrate 8.5.0 → 10.0.0.rc1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.github/workflows/build.yml +35 -0
- data/.github/workflows/gempush.yml +1 -0
- data/.travis.yml +2 -2
- data/Appraisals +0 -4
- data/Changelog.md +13 -0
- data/README.md +3 -3
- data/data_migrate.gemspec +1 -10
- data/lib/data_migrate/config.rb +1 -1
- data/lib/data_migrate/{data_migrator_five.rb → data_migrator.rb} +0 -11
- data/lib/data_migrate/database_tasks.rb +12 -72
- data/lib/data_migrate/{schema_migration_six.rb → schema_migration.rb} +4 -2
- data/lib/data_migrate/{status_service_five.rb → status_service.rb} +12 -6
- data/lib/data_migrate/tasks/data_migrate_tasks.rb +19 -39
- data/lib/data_migrate/version.rb +1 -1
- data/lib/data_migrate.rb +3 -8
- data/spec/data_migrate/config_spec.rb +13 -10
- data/spec/data_migrate/data_migrator_spec.rb +11 -32
- data/spec/data_migrate/data_spec.rb +0 -11
- data/spec/data_migrate/database_tasks_spec.rb +10 -58
- data/spec/data_migrate/legacy_migrator_spec.rb +6 -18
- data/spec/data_migrate/migration.rb +11 -13
- data/spec/data_migrate/migration_context_spec.rb +11 -37
- data/spec/data_migrate/schema_dumper_spec.rb +10 -23
- data/spec/data_migrate/schema_migration_spec.rb +40 -42
- data/spec/data_migrate/status_service_spec.rb +26 -55
- data/spec/data_migrate/tasks/data_migrate_tasks_spec.rb +37 -71
- data/spec/db/data/20091231235959_some_name.rb +1 -1
- data/spec/db/data/20171231235959_super_update.rb +1 -1
- data/spec/spec_helper.rb +2 -8
- data/tasks/databases.rake +28 -5
- metadata +15 -30
- data/Gemfile.rails5.2 +0 -10
- data/gemfiles/rails_5.2.gemfile +0 -8
- data/lib/data_migrate/schema_migration_five.rb +0 -31
- 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-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 → 20131111111111_late_migration.rb} +0 -0
- /data/spec/db/migrate/{6.0/20202020202011_db_migration.rb → 20202020202011_db_migration.rb} +0 -0
@@ -3,33 +3,40 @@
|
|
3
3
|
require "spec_helper"
|
4
4
|
|
5
5
|
describe DataMigrate::Tasks::DataMigrateTasks do
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
}
|
6
|
+
let(:connection_db_config) do
|
7
|
+
if Gem::Dependency.new("rails", ">= 6.1").match?("rails", Gem.loaded_specs["rails"].version)
|
8
|
+
ActiveRecord::Base.connection_db_config
|
9
|
+
else
|
10
|
+
ActiveRecord::Base.configurations.configs_for.first
|
12
11
|
end
|
12
|
+
end
|
13
|
+
|
14
|
+
before do
|
15
|
+
ActiveRecord::SchemaMigration.create_table
|
16
|
+
DataMigrate::DataSchemaMigration.create_table
|
17
|
+
end
|
13
18
|
|
19
|
+
after do
|
20
|
+
ActiveRecord::Migration.drop_table("data_migrations") rescue nil
|
21
|
+
ActiveRecord::Migration.drop_table("schema_migrations") rescue nil
|
22
|
+
end
|
23
|
+
|
24
|
+
describe :dump do
|
14
25
|
before do
|
15
|
-
allow(DataMigrate::DataMigrator).to receive(:db_config) { db_config }
|
16
26
|
allow(DataMigrate::DatabaseTasks).to receive(:db_dir).and_return("spec/db")
|
17
|
-
|
18
|
-
|
19
|
-
after do
|
20
|
-
ActiveRecord::Migration.drop_table("data_migrations")
|
27
|
+
DataMigrate::Tasks::DataMigrateTasks.migrate
|
21
28
|
end
|
22
29
|
|
23
30
|
context 'when not given a separate db config' do
|
24
|
-
it 'does not override the default connection' do
|
25
|
-
DataMigrate::Tasks::DataMigrateTasks.migrate
|
31
|
+
it 'does not override the default connection' do
|
26
32
|
expect(ActiveRecord::Base).not_to receive(:establish_connection)
|
27
33
|
expect(DataMigrate::SchemaDumper).to receive(:dump)
|
28
|
-
|
34
|
+
|
35
|
+
DataMigrate::Tasks::DataMigrateTasks.dump(connection_db_config)
|
29
36
|
end
|
30
37
|
end
|
31
38
|
|
32
|
-
context 'when given ' do
|
39
|
+
context 'when given a separate db config' do
|
33
40
|
let(:override_config) do
|
34
41
|
{
|
35
42
|
'host' => '127.0.0.1',
|
@@ -39,6 +46,7 @@ describe DataMigrate::Tasks::DataMigrateTasks do
|
|
39
46
|
'password' => nil,
|
40
47
|
}
|
41
48
|
end
|
49
|
+
let(:paths) { ["spec/db/migrate"] }
|
42
50
|
|
43
51
|
before do
|
44
52
|
DataMigrate.configure do |config|
|
@@ -47,40 +55,20 @@ describe DataMigrate::Tasks::DataMigrateTasks do
|
|
47
55
|
end
|
48
56
|
|
49
57
|
it 'overrides the default connection' do
|
50
|
-
DataMigrate::Tasks::DataMigrateTasks.migrate
|
51
58
|
expect(ActiveRecord::Base).to receive(:establish_connection).with(override_config)
|
52
|
-
|
59
|
+
|
60
|
+
DataMigrate::Tasks::DataMigrateTasks.dump(connection_db_config)
|
53
61
|
end
|
54
62
|
end
|
55
63
|
end
|
56
64
|
|
57
65
|
describe :migrate do
|
58
|
-
|
59
|
-
{
|
60
|
-
adapter: "sqlite3",
|
61
|
-
database: "spec/db/test.db"
|
62
|
-
}
|
63
|
-
end
|
64
|
-
|
65
|
-
before do
|
66
|
-
allow(DataMigrate::DataMigrator).to receive(:db_config) { db_config }
|
67
|
-
ActiveRecord::Base.establish_connection(db_config)
|
68
|
-
end
|
69
|
-
|
70
|
-
after do
|
71
|
-
ActiveRecord::Migration.drop_table("data_migrations")
|
66
|
+
it "first run should run the first pending migration" do
|
67
|
+
expect { DataMigrate::Tasks::DataMigrateTasks.migrate }.to output(/20091231235959 SomeName: migrating/).to_stdout
|
72
68
|
end
|
73
69
|
|
74
|
-
it do
|
75
|
-
|
76
|
-
DataMigrate::Tasks::DataMigrateTasks.migrate
|
77
|
-
}.to output(/20091231235959 SomeName: migrating/).to_stdout
|
78
|
-
end
|
79
|
-
|
80
|
-
it do
|
81
|
-
expect {
|
82
|
-
DataMigrate::Tasks::DataMigrateTasks.migrate
|
83
|
-
}.to output(/20171231235959 SuperUpdate: migrating/).to_stdout
|
70
|
+
it "second run should run the second pending migration" do
|
71
|
+
expect { DataMigrate::Tasks::DataMigrateTasks.migrate }.to output(/20171231235959 SuperUpdate: migrating/).to_stdout
|
84
72
|
end
|
85
73
|
end
|
86
74
|
|
@@ -111,52 +99,30 @@ describe DataMigrate::Tasks::DataMigrateTasks do
|
|
111
99
|
it "should abort with given message and print names and versions of pending migrations" do
|
112
100
|
expect { subject }
|
113
101
|
.to raise_error(SystemExit, message)
|
114
|
-
.and output(
|
102
|
+
.and output(match(/You have #{migrations.count} pending migrations:/)
|
103
|
+
.and match(Regexp.new(migrations.map { |m| m.slice(:version, :name)
|
104
|
+
.values.join("\\W+") }.join("\\W+")))).to_stdout
|
115
105
|
end
|
116
106
|
end
|
117
107
|
end
|
118
108
|
|
119
|
-
describe
|
120
|
-
let(:db_config) do
|
121
|
-
{
|
122
|
-
adapter: "sqlite3",
|
123
|
-
database: "spec/db/test.db"
|
124
|
-
}
|
125
|
-
end
|
126
|
-
|
109
|
+
describe ".status" do
|
127
110
|
before do
|
128
|
-
|
129
|
-
|
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
|
111
|
+
allow(Rails).to receive(:root) { "." }
|
112
|
+
allow(Rails).to receive(:application) { OpenStruct.new(config: OpenStruct.new(paths: { "db/migrate" => ["spec/db/migrate"] })) }
|
143
113
|
|
144
114
|
DataMigrate::Tasks::DataMigrateTasks.migrate
|
145
115
|
end
|
146
116
|
|
147
|
-
after do
|
148
|
-
ActiveRecord::Migration.drop_table("data_migrations")
|
149
|
-
end
|
150
|
-
|
151
117
|
it "should display data migration status" do
|
152
118
|
expect {
|
153
|
-
DataMigrate::Tasks::DataMigrateTasks.status
|
119
|
+
DataMigrate::Tasks::DataMigrateTasks.status(connection_db_config)
|
154
120
|
}.to output(/up 20091231235959 Some name/).to_stdout
|
155
121
|
end
|
156
122
|
|
157
123
|
it "should display schema and data migration status" do
|
158
124
|
expect {
|
159
|
-
DataMigrate::Tasks::DataMigrateTasks.status_with_schema
|
125
|
+
DataMigrate::Tasks::DataMigrateTasks.status_with_schema(connection_db_config)
|
160
126
|
}.to output(match(/up data 20091231235959 Some name/)
|
161
127
|
.and match(/down schema 20131111111111 Late migration/)).to_stdout
|
162
128
|
end
|
data/spec/spec_helper.rb
CHANGED
@@ -20,14 +20,8 @@ RSpec.configure do |config|
|
|
20
20
|
if example.metadata[:no_override]
|
21
21
|
else
|
22
22
|
@prev_data_migrations_path = DataMigrate.config.data_migrations_path
|
23
|
-
|
24
|
-
|
25
|
-
config.data_migrations_path = "spec/db/data"
|
26
|
-
end
|
27
|
-
else
|
28
|
-
DataMigrate.configure do |config|
|
29
|
-
config.data_migrations_path = "spec/db/6.0"
|
30
|
-
end
|
23
|
+
DataMigrate.configure do |config|
|
24
|
+
config.data_migrations_path = "spec/db/data"
|
31
25
|
end
|
32
26
|
end
|
33
27
|
end
|
data/tasks/databases.rake
CHANGED
@@ -1,10 +1,15 @@
|
|
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
8
|
task :with_data => :environment do
|
7
|
-
|
9
|
+
original_db_config = ActiveRecord::Base.connection_db_config
|
10
|
+
ActiveRecord::Base.configurations.configs_for(env_name: ActiveRecord::Tasks::DatabaseTasks.env).each do |db_config|
|
11
|
+
ActiveRecord::Base.establish_connection(db_config)
|
12
|
+
DataMigrate::DataMigrator.assure_data_schema_table
|
8
13
|
|
9
14
|
ActiveRecord::Migration.verbose = ENV["VERBOSE"] ? ENV["VERBOSE"] == "true" : true
|
10
15
|
target_version = ENV["VERSION"] ? ENV["VERSION"].to_i : nil
|
@@ -48,9 +53,12 @@ namespace :db do
|
|
48
53
|
migrations.each do |migration|
|
49
54
|
DataMigrate::DatabaseTasks.run_migration(migration, migration[:direction])
|
50
55
|
end
|
56
|
+
end
|
51
57
|
|
52
58
|
Rake::Task["db:_dump"].invoke
|
53
59
|
Rake::Task["data:dump"].invoke
|
60
|
+
ensure
|
61
|
+
ActiveRecord::Base.establish_connection(original_db_config)
|
54
62
|
end
|
55
63
|
|
56
64
|
namespace :redo do
|
@@ -114,7 +122,10 @@ namespace :db do
|
|
114
122
|
namespace :status do
|
115
123
|
desc "Display status of data and schema migrations"
|
116
124
|
task :with_data => :environment do
|
117
|
-
|
125
|
+
ActiveRecord::Base.configurations.configs_for(env_name: ActiveRecord::Tasks::DatabaseTasks.env).each do |db_config|
|
126
|
+
ActiveRecord::Base.establish_connection(db_config)
|
127
|
+
DataMigrate::Tasks::DataMigrateTasks.status_with_schema(db_config)
|
128
|
+
end
|
118
129
|
end
|
119
130
|
end
|
120
131
|
end # END OF MIGRATE NAME SPACE
|
@@ -193,8 +204,14 @@ end
|
|
193
204
|
namespace :data do
|
194
205
|
desc 'Migrate data migrations (options: VERSION=x, VERBOSE=false)'
|
195
206
|
task :migrate => :environment do
|
196
|
-
|
207
|
+
original_db_config = ActiveRecord::Base.connection_db_config
|
208
|
+
ActiveRecord::Base.configurations.configs_for(env_name: ActiveRecord::Tasks::DatabaseTasks.env).each do |db_config|
|
209
|
+
ActiveRecord::Base.establish_connection(db_config)
|
210
|
+
DataMigrate::Tasks::DataMigrateTasks.migrate
|
211
|
+
end
|
197
212
|
Rake::Task["data:dump"].invoke
|
213
|
+
ensure
|
214
|
+
ActiveRecord::Base.establish_connection(original_db_config)
|
198
215
|
end
|
199
216
|
|
200
217
|
namespace :migrate do
|
@@ -230,7 +247,10 @@ namespace :data do
|
|
230
247
|
|
231
248
|
desc "Display status of data migrations"
|
232
249
|
task :status => :environment do
|
233
|
-
|
250
|
+
ActiveRecord::Base.configurations.configs_for(env_name: ActiveRecord::Tasks::DatabaseTasks.env).each do |db_config|
|
251
|
+
ActiveRecord::Base.establish_connection(db_config)
|
252
|
+
DataMigrate::Tasks::DataMigrateTasks.status(db_config)
|
253
|
+
end
|
234
254
|
end
|
235
255
|
end
|
236
256
|
|
@@ -269,7 +289,10 @@ namespace :data do
|
|
269
289
|
|
270
290
|
desc "Create a db/data_schema.rb file that stores the current data version"
|
271
291
|
task dump: :environment do
|
272
|
-
|
292
|
+
ActiveRecord::Base.configurations.configs_for(env_name: ActiveRecord::Tasks::DatabaseTasks.env).each do |db_config|
|
293
|
+
ActiveRecord::Base.establish_connection(db_config)
|
294
|
+
DataMigrate::Tasks::DataMigrateTasks.dump(db_config)
|
295
|
+
end
|
273
296
|
|
274
297
|
# Allow this task to be called as many times as required. An example
|
275
298
|
# is the migrate:redo task, which calls other two internally
|
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:
|
4
|
+
version: 10.0.0.rc1
|
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: 2023-
|
13
|
+
date: 2023-04-23 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: activerecord
|
@@ -18,28 +18,28 @@ dependencies:
|
|
18
18
|
requirements:
|
19
19
|
- - ">="
|
20
20
|
- !ruby/object:Gem::Version
|
21
|
-
version: '
|
21
|
+
version: '6.0'
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
24
|
version_requirements: !ruby/object:Gem::Requirement
|
25
25
|
requirements:
|
26
26
|
- - ">="
|
27
27
|
- !ruby/object:Gem::Version
|
28
|
-
version: '
|
28
|
+
version: '6.0'
|
29
29
|
- !ruby/object:Gem::Dependency
|
30
30
|
name: railties
|
31
31
|
requirement: !ruby/object:Gem::Requirement
|
32
32
|
requirements:
|
33
33
|
- - ">="
|
34
34
|
- !ruby/object:Gem::Version
|
35
|
-
version: '
|
35
|
+
version: '6.0'
|
36
36
|
type: :runtime
|
37
37
|
prerelease: false
|
38
38
|
version_requirements: !ruby/object:Gem::Requirement
|
39
39
|
requirements:
|
40
40
|
- - ">="
|
41
41
|
- !ruby/object:Gem::Version
|
42
|
-
version: '
|
42
|
+
version: '6.0'
|
43
43
|
- !ruby/object:Gem::Dependency
|
44
44
|
name: appraisal
|
45
45
|
requirement: !ruby/object:Gem::Requirement
|
@@ -189,6 +189,7 @@ executables: []
|
|
189
189
|
extensions: []
|
190
190
|
extra_rdoc_files: []
|
191
191
|
files:
|
192
|
+
- ".github/workflows/build.yml"
|
192
193
|
- ".github/workflows/gempush.yml"
|
193
194
|
- ".gitignore"
|
194
195
|
- ".hound.yml"
|
@@ -202,13 +203,11 @@ files:
|
|
202
203
|
- Appraisals
|
203
204
|
- Changelog.md
|
204
205
|
- Gemfile
|
205
|
-
- Gemfile.rails5.2
|
206
206
|
- Gemfile.rails6.1
|
207
207
|
- LICENSE
|
208
208
|
- README.md
|
209
209
|
- Rakefile
|
210
210
|
- data_migrate.gemspec
|
211
|
-
- gemfiles/rails_5.2.gemfile
|
212
211
|
- gemfiles/rails_6.0.gemfile
|
213
212
|
- gemfiles/rails_6.1.gemfile
|
214
213
|
- gemfiles/rails_7.0.gemfile
|
@@ -216,7 +215,7 @@ files:
|
|
216
215
|
- lib/capistrano/data_migrate/migrate.rb
|
217
216
|
- lib/data_migrate.rb
|
218
217
|
- lib/data_migrate/config.rb
|
219
|
-
- lib/data_migrate/
|
218
|
+
- lib/data_migrate/data_migrator.rb
|
220
219
|
- lib/data_migrate/data_schema.rb
|
221
220
|
- lib/data_migrate/data_schema_migration.rb
|
222
221
|
- lib/data_migrate/database_tasks.rb
|
@@ -224,9 +223,8 @@ files:
|
|
224
223
|
- lib/data_migrate/migration_context.rb
|
225
224
|
- lib/data_migrate/railtie.rb
|
226
225
|
- lib/data_migrate/schema_dumper.rb
|
227
|
-
- lib/data_migrate/
|
228
|
-
- lib/data_migrate/
|
229
|
-
- lib/data_migrate/status_service_five.rb
|
226
|
+
- lib/data_migrate/schema_migration.rb
|
227
|
+
- lib/data_migrate/status_service.rb
|
230
228
|
- lib/data_migrate/tasks/data_migrate_tasks.rb
|
231
229
|
- lib/data_migrate/version.rb
|
232
230
|
- lib/generators/data_migrate.rb
|
@@ -246,11 +244,6 @@ files:
|
|
246
244
|
- spec/data_migrate/schema_migration_spec.rb
|
247
245
|
- spec/data_migrate/status_service_spec.rb
|
248
246
|
- spec/data_migrate/tasks/data_migrate_tasks_spec.rb
|
249
|
-
- spec/db/6.0/20091231235959_some_name.rb
|
250
|
-
- spec/db/6.0/20171231235959_super_update.rb
|
251
|
-
- spec/db/data-6.0/20091231235959_some_name.rb
|
252
|
-
- spec/db/data-6.0/20171231235959_super_update.rb
|
253
|
-
- spec/db/data-6.0/20181128000207_excluded_file.rb.other_ext
|
254
247
|
- spec/db/data/20091231235959_some_name.rb
|
255
248
|
- spec/db/data/20171231235959_super_update.rb
|
256
249
|
- spec/db/data/20181128000207_excluded_file.rb.other_ext
|
@@ -258,10 +251,8 @@ files:
|
|
258
251
|
- spec/db/data/partial_schema/test_data_schema.rb
|
259
252
|
- spec/db/data/schema/data_schema.rb
|
260
253
|
- spec/db/data/schema/test_data_schema.rb
|
261
|
-
- spec/db/migrate/
|
262
|
-
- spec/db/migrate/
|
263
|
-
- spec/db/migrate/6.0/20131111111111_late_migration.rb
|
264
|
-
- spec/db/migrate/6.0/20202020202011_db_migration.rb
|
254
|
+
- spec/db/migrate/20131111111111_late_migration.rb
|
255
|
+
- spec/db/migrate/20202020202011_db_migration.rb
|
265
256
|
- spec/generators/data_migration/data_migration_generator_spec.rb
|
266
257
|
- spec/spec_helper.rb
|
267
258
|
- tasks/.gitkeep
|
@@ -270,13 +261,7 @@ homepage: https://github.com/ilyakatz/data-migrate
|
|
270
261
|
licenses:
|
271
262
|
- MIT
|
272
263
|
metadata: {}
|
273
|
-
post_install_message:
|
274
|
-
********************************************************************************
|
275
|
-
data-migrate: IMPORTANT: Breaking change introduced for migrations from v2.
|
276
|
-
|
277
|
-
Failure to run the migration can have serious consequences.
|
278
|
-
See Readme for more info.
|
279
|
-
********************************************************************************
|
264
|
+
post_install_message:
|
280
265
|
rdoc_options: []
|
281
266
|
require_paths:
|
282
267
|
- lib
|
@@ -287,9 +272,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
287
272
|
version: '0'
|
288
273
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
289
274
|
requirements:
|
290
|
-
- - "
|
275
|
+
- - ">"
|
291
276
|
- !ruby/object:Gem::Version
|
292
|
-
version:
|
277
|
+
version: 1.3.1
|
293
278
|
requirements: []
|
294
279
|
rubygems_version: 3.3.26
|
295
280
|
signing_key:
|
data/Gemfile.rails5.2
DELETED
data/gemfiles/rails_5.2.gemfile
DELETED
@@ -1,31 +0,0 @@
|
|
1
|
-
module DataMigrate
|
2
|
-
# Helper class to getting access to db schema
|
3
|
-
# to allow data/schema combiation tasks
|
4
|
-
class SchemaMigration
|
5
|
-
def self.pending_schema_migrations
|
6
|
-
all_migrations = DataMigrate::MigrationContext.new(migrations_paths).migrations
|
7
|
-
sort_migrations(
|
8
|
-
ActiveRecord::Migrator.new(:up, all_migrations).
|
9
|
-
pending_migrations.
|
10
|
-
map {|m| { version: m.version, name: m.name, kind: :schema }}
|
11
|
-
)
|
12
|
-
end
|
13
|
-
|
14
|
-
def self.run(direction, migration_paths, version)
|
15
|
-
ActiveRecord::MigrationContext.new(migration_paths).run(direction, version)
|
16
|
-
end
|
17
|
-
|
18
|
-
def self.sort_migrations(set1, set2 = nil)
|
19
|
-
migrations = set1 + (set2 || [])
|
20
|
-
migrations.sort {|a, b| sort_string(a) <=> sort_string(b)}
|
21
|
-
end
|
22
|
-
|
23
|
-
def self.migrations_paths
|
24
|
-
Rails.application.config.paths["db/migrate"].to_a
|
25
|
-
end
|
26
|
-
|
27
|
-
def self.sort_string(migration)
|
28
|
-
"#{migration[:version]}_#{migration[:kind] == :data ? 1 : 0}"
|
29
|
-
end
|
30
|
-
end
|
31
|
-
end
|
@@ -1 +0,0 @@
|
|
1
|
-
# This file should be excluded
|
/data/spec/db/migrate/{6.0/20131111111111_late_migration.rb → 20131111111111_late_migration.rb}
RENAMED
File without changes
|
File without changes
|