data_migrate 6.2.0 → 6.3.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Changelog.md +4 -0
- data/README.md +23 -20
- data/lib/data_migrate/database_tasks.rb +1 -1
- data/lib/data_migrate/schema_migration.rb +1 -1
- data/lib/data_migrate/schema_migration_five.rb +1 -1
- data/lib/data_migrate/tasks/data_migrate_tasks.rb +10 -0
- data/lib/data_migrate/version.rb +1 -1
- data/spec/data_migrate/tasks/data_migrate_tasks_spec.rb +48 -16
- data/tasks/databases.rake +14 -0
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 7fa861e31bdaa49b654d9c40b11b8a8871f5f8d5c3241d17e0072c43ecf4c0c2
|
4
|
+
data.tar.gz: 9151be3e992b0271ded30d0bde83a0b57c2236e701762881b75f27a0663ba4a9
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3a4004c4a456a1b323add0ee2f7b3012c164763476f0be5957a202afc7388e22a1bc521272c6c359c0c0c0f14dc08b7528edc2ba19a908ac56a692ac1cc76832
|
7
|
+
data.tar.gz: b8cc321107a19adf0ccae807d755f5743de9c97f8e0fb86db631473d4f169e8bbdd6f5a97cd6a187eb895417051c73379b1ad4cba390dca620835e874e4fa1b3
|
data/Changelog.md
CHANGED
data/README.md
CHANGED
@@ -82,26 +82,29 @@ You can generate a data migration as you would a schema migration:
|
|
82
82
|
### Rake Tasks
|
83
83
|
|
84
84
|
$> rake -T data
|
85
|
-
rake data:
|
86
|
-
rake data:
|
87
|
-
rake data:
|
88
|
-
rake data:migrate
|
89
|
-
rake data:migrate:
|
90
|
-
rake data:migrate:
|
91
|
-
rake data:migrate:
|
92
|
-
rake data:
|
93
|
-
rake data:
|
94
|
-
rake data:
|
95
|
-
rake
|
96
|
-
rake db:
|
97
|
-
rake db:
|
98
|
-
rake db:migrate:
|
99
|
-
rake db:migrate:
|
100
|
-
rake db:migrate:with_data
|
101
|
-
rake db:
|
102
|
-
rake db:
|
103
|
-
rake db:
|
104
|
-
rake db:
|
85
|
+
rake data:abort_if_pending_migrations # Raises an error if there are pending data migrations
|
86
|
+
rake data:dump # Create a db/data_schema.rb file that stores the current data version
|
87
|
+
rake data:forward # Pushes the schema to the next version (specify steps w/ STEP=n)
|
88
|
+
rake data:migrate # Migrate data migrations (options: VERSION=x, VERBOSE=false)
|
89
|
+
rake data:migrate:down # Runs the "down" for a given migration VERSION
|
90
|
+
rake data:migrate:redo # Rollbacks the database one migration and re migrate up (options: STEP=x, VERSION=x)
|
91
|
+
rake data:migrate:status # Display status of data migrations
|
92
|
+
rake data:migrate:up # Runs the "up" for a given migration VERSION
|
93
|
+
rake data:rollback # Rolls the schema back to the previous version (specify steps w/ STEP=n)
|
94
|
+
rake data:schema:load # Load data_schema.rb file into the database without running the data migrations
|
95
|
+
rake data:version # Retrieves the current schema version number for data migrations
|
96
|
+
rake db:abort_if_pending_migrations:with_data # Raises an error if there are pending migrations or data migrations
|
97
|
+
rake db:forward:with_data # Pushes the schema to the next version (specify steps w/ STEP=n)
|
98
|
+
rake db:migrate:down:with_data # Runs the "down" for a given migration VERSION
|
99
|
+
rake db:migrate:redo:with_data # Rollbacks the database one migration and re migrate up (options: STEP=x, VERSION=x)
|
100
|
+
rake db:migrate:status:with_data # Display status of data and schema migrations
|
101
|
+
rake db:migrate:up:with_data # Runs the "up" for a given migration VERSION
|
102
|
+
rake db:migrate:with_data # Migrate the database data and schema (options: VERSION=x, VERBOSE=false)
|
103
|
+
rake db:rollback:with_data # Rolls the schema back to the previous version (specify steps w/ STEP=n)
|
104
|
+
rake db:schema:load:with_data # Load both schema.rb and data_schema.rb file into the database
|
105
|
+
rake db:structure:load:with_data # Load both structure.sql and data_schema.rb file into the database
|
106
|
+
rake db:version:with_data # Retrieves the current schema version numbers for data and schema migrations
|
107
|
+
|
105
108
|
|
106
109
|
Tasks work as they would with the 'vanilla' db version. The 'with_data' addition to the 'db' tasks will run the task in the context of both the data and schema migrations. That is, rake db:rollback:with_data will check to see if it was a schema or data migration invoked last, and do that. Tasks invoked in that space also have an additional line of output, indicating if the action is performed on data or schema.
|
107
110
|
|
@@ -69,7 +69,7 @@ module DataMigrate
|
|
69
69
|
def self.pending_data_migrations
|
70
70
|
data_migrations = DataMigrate::DataMigrator.migrations(data_migrations_path)
|
71
71
|
sort_migrations(DataMigrate::DataMigrator.new(:up, data_migrations ).
|
72
|
-
pending_migrations.map {|m| { version: m.version, kind: :data }})
|
72
|
+
pending_migrations.map {|m| { version: m.version, name: m.name, kind: :data }})
|
73
73
|
end
|
74
74
|
|
75
75
|
def self.pending_schema_migrations
|
@@ -16,6 +16,16 @@ module DataMigrate
|
|
16
16
|
DataMigrate::DataMigrator.migrate(migrations_paths, ENV["VERSION"] ? ENV["VERSION"].to_i : nil)
|
17
17
|
end
|
18
18
|
end
|
19
|
+
|
20
|
+
def abort_if_pending_migrations(migrations, message)
|
21
|
+
if migrations.any?
|
22
|
+
puts "You have #{migrations.size} pending #{migrations.size > 1 ? 'migrations:' : 'migration:'}"
|
23
|
+
migrations.each do |pending_migration|
|
24
|
+
puts " %4d %s" % [pending_migration[:version], pending_migration[:name]]
|
25
|
+
end
|
26
|
+
abort message
|
27
|
+
end
|
28
|
+
end
|
19
29
|
end
|
20
30
|
end
|
21
31
|
end
|
data/lib/data_migrate/version.rb
CHANGED
@@ -3,23 +3,23 @@
|
|
3
3
|
require "spec_helper"
|
4
4
|
|
5
5
|
describe DataMigrate::Tasks::DataMigrateTasks do
|
6
|
-
let(:db_config) do
|
7
|
-
{
|
8
|
-
adapter: "sqlite3",
|
9
|
-
database: "spec/db/test.db"
|
10
|
-
}
|
11
|
-
end
|
12
|
-
|
13
|
-
before do
|
14
|
-
allow(DataMigrate::DataMigrator).to receive(:db_config) { db_config }
|
15
|
-
ActiveRecord::Base.establish_connection(db_config)
|
16
|
-
end
|
17
|
-
|
18
|
-
after do
|
19
|
-
ActiveRecord::Migration.drop_table("data_migrations")
|
20
|
-
end
|
21
|
-
|
22
6
|
describe :migrate do
|
7
|
+
let(:db_config) do
|
8
|
+
{
|
9
|
+
adapter: "sqlite3",
|
10
|
+
database: "spec/db/test.db"
|
11
|
+
}
|
12
|
+
end
|
13
|
+
|
14
|
+
before do
|
15
|
+
allow(DataMigrate::DataMigrator).to receive(:db_config) { db_config }
|
16
|
+
ActiveRecord::Base.establish_connection(db_config)
|
17
|
+
end
|
18
|
+
|
19
|
+
after do
|
20
|
+
ActiveRecord::Migration.drop_table("data_migrations")
|
21
|
+
end
|
22
|
+
|
23
23
|
it do
|
24
24
|
expect {
|
25
25
|
DataMigrate::Tasks::DataMigrateTasks.migrate
|
@@ -32,4 +32,36 @@ describe DataMigrate::Tasks::DataMigrateTasks do
|
|
32
32
|
}.to output(/20171231235959 SuperUpdate: migrating/).to_stdout
|
33
33
|
end
|
34
34
|
end
|
35
|
+
|
36
|
+
describe :abort_if_pending_migrations do
|
37
|
+
subject { DataMigrate::Tasks::DataMigrateTasks.abort_if_pending_migrations(migrations, message) }
|
38
|
+
|
39
|
+
let(:message) { "ABORT_MESSAGE" }
|
40
|
+
|
41
|
+
context "when there are no pending migrations" do
|
42
|
+
let(:migrations) { [] }
|
43
|
+
|
44
|
+
it "shouldn't do anything" do
|
45
|
+
expect { subject }.to_not raise_error
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
context "when there are pending migrations" do
|
50
|
+
let(:migrations) do
|
51
|
+
[{
|
52
|
+
name: "A",
|
53
|
+
version: 1
|
54
|
+
}, {
|
55
|
+
name: 'B',
|
56
|
+
version: 2
|
57
|
+
}]
|
58
|
+
end
|
59
|
+
|
60
|
+
it "should abort with given message and print names and versions of pending migrations" do
|
61
|
+
expect { subject }
|
62
|
+
.to raise_error(SystemExit, message)
|
63
|
+
.and output("You have 2 pending migrations:\n 1 A\n 2 B\n").to_stdout
|
64
|
+
end
|
65
|
+
end
|
66
|
+
end
|
35
67
|
end
|
data/tasks/databases.rake
CHANGED
@@ -223,6 +223,14 @@ namespace :db do
|
|
223
223
|
end
|
224
224
|
end
|
225
225
|
|
226
|
+
namespace :abort_if_pending_migrations do
|
227
|
+
desc "Raises an error if there are pending migrations or data migrations"
|
228
|
+
task with_data: :environment do
|
229
|
+
message = %{Run `rake db:migrate:with_data` to update your database then try again.}
|
230
|
+
DataMigrate::Tasks::DataMigrateTasks.abort_if_pending_migrations(pending_migrations, message)
|
231
|
+
end
|
232
|
+
end
|
233
|
+
|
226
234
|
namespace :schema do
|
227
235
|
namespace :load do
|
228
236
|
desc "Load both schema.rb and data_schema.rb file into the database"
|
@@ -327,6 +335,12 @@ namespace :data do
|
|
327
335
|
puts "Current data version: #{DataMigrate::DataMigrator.current_version}"
|
328
336
|
end
|
329
337
|
|
338
|
+
desc "Raises an error if there are pending data migrations"
|
339
|
+
task abort_if_pending_migrations: :environment do
|
340
|
+
message = %{Run `rake data:migrate` to update your database then try again.}
|
341
|
+
DataMigrate::Tasks::DataMigrateTasks.abort_if_pending_migrations(pending_data_migrations, message)
|
342
|
+
end
|
343
|
+
|
330
344
|
desc "Create a db/data_schema.rb file that stores the current data version"
|
331
345
|
task dump: :environment do
|
332
346
|
if ActiveRecord::Base.dump_schema_after_migration
|
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: 6.
|
4
|
+
version: 6.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Andrew J Vargo
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date:
|
13
|
+
date: 2020-03-11 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: rails
|