data_migrate 6.0.7 → 6.1.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/.travis.yml +0 -1
- data/Appraisals +1 -1
- data/Changelog.md +9 -0
- data/Gemfile +1 -1
- data/README.md +10 -42
- data/gemfiles/rails_5.1.gemfile +1 -0
- data/gemfiles/rails_5.2.gemfile +1 -0
- data/gemfiles/rails_6.0.gemfile +1 -1
- data/lib/data_migrate/database_tasks.rb +27 -0
- data/lib/data_migrate/version.rb +1 -1
- data/spec/data_migrate/data_migrator_spec.rb +1 -3
- data/spec/data_migrate/database_tasks_spec.rb +31 -1
- data/spec/db/data/partial_schema/data_schema.rb +2 -0
- data/spec/db/data/schema/data_schema.rb +2 -0
- data/spec/spec_helper.rb +7 -0
- metadata +3 -2
- data/gemfiles/rails_5.0.gemfile +0 -7
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 18145281c69f3a789a8fc2de0873b3ddbed3c1ccec3faed5de71a9ed2dad6e58
|
4
|
+
data.tar.gz: 93e91ecc167ad2fb8cf2ef664adf405e9d47868ead4ce0f24057269c9139dea0
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3ff5ee90e37051fb6668ae63a2640c41cc8be3e301a6c5bb7b58a5581f81de71b54ecab7f66b0136c88733d9f4314b2e85e5c739da4ba9939607d7e0cde8c8b6
|
7
|
+
data.tar.gz: a328b2ddc325d69d98197ae2ae5db29932377e1c0bf1947ab08297bc5973ed167fbbc42ed70d35993fb02250efab721cdb0a4fb6789339da6f02af10a1664093
|
data/.travis.yml
CHANGED
data/Appraisals
CHANGED
data/Changelog.md
CHANGED
@@ -1,5 +1,14 @@
|
|
1
1
|
# Changelog
|
2
2
|
|
3
|
+
## 6.1.0
|
4
|
+
|
5
|
+
Fixing `rake db:schema:load:with_data` for Rails 6
|
6
|
+
|
7
|
+
Note:
|
8
|
+
|
9
|
+
Rails 5.0 is no longer maintained. The gem will still work but it is not being
|
10
|
+
actively tested.
|
11
|
+
|
3
12
|
## 6.0.5
|
4
13
|
|
5
14
|
Fixing `needs_migration?` method for Rails 5.2 and up [EnomaDebby](https://github.com/EnomaDebby)
|
data/Gemfile
CHANGED
data/README.md
CHANGED
@@ -14,45 +14,12 @@ is the place to do it.
|
|
14
14
|
|
15
15
|

|
16
16
|
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
resume migrations. It tanks a lot of the automation of deploy.
|
24
|
-
|
25
|
-
If you don't use the one off scripts, you could do it as a regular
|
26
|
-
migration. It'd be much better to keep concerns separate. The benefit
|
27
|
-
of having them separate has to do with your data model.
|
28
|
-
|
29
|
-
For instance, lets take an absurd example, to illustrate: You have
|
30
|
-
a blog application that has posts with many comments.
|
31
|
-
After some use, you decide you are going to be a trend setter,
|
32
|
-
and want only one comment per post, and just the text.
|
33
|
-
|
34
|
-
Given that you:
|
35
|
-
|
36
|
-
- write a migration to add a comment column to `Post`
|
37
|
-
- write a migration to move the contents of the first comments to the `Post`
|
38
|
-
- drop the `column_id` column from `Post`
|
39
|
-
- drop the `Comment` model
|
40
|
-
- fix all your tests
|
41
|
-
|
42
|
-
You've just got bit. When you `rake setup:development`, the mess gets
|
43
|
-
mad at you after it creates your database, and starts cranking through
|
44
|
-
migrations. It gets to the part where you iterate over the comments
|
45
|
-
and it blows up. You don't have a `Comment` model anymore for it to
|
46
|
-
even try and get 'all' from. You think you are smarter, and wrap the
|
47
|
-
ActiveRecord call in a conditional based on the environment.
|
48
|
-
|
49
|
-
That's fine until you get that QA gal, and she wants her own thing.
|
50
|
-
Then the UI people get tired of waiting for the full stack to load on page
|
51
|
-
refreshes, so you have to edit past migrations...
|
52
|
-
|
53
|
-
With Data Migrate, you have the control. You can generate your
|
54
|
-
migrations as schema or data as you would as your work flow. For
|
55
|
-
setting tasks that don't require any intermediate AR activity, like
|
17
|
+
## Why should I use this?
|
18
|
+
|
19
|
+
With data-migrate you can generate your migrations for data as you would schema
|
20
|
+
in your regular work flow.
|
21
|
+
|
22
|
+
For setting tasks that don't require any intermediate AR activity, like
|
56
23
|
dev and test, you stick with `db:migrate`. For production and QA, you
|
57
24
|
change their scripts to `db:migrate:with_data`. Of course you want to
|
58
25
|
test your migration, so you have the choice of `db:migrate:with_data` or
|
@@ -65,7 +32,7 @@ migrations, except they should be reserved for data migrations. For
|
|
65
32
|
instance, if you realize you need to titleize all yours titles, this
|
66
33
|
is the place to do it. Running any of the provided rake tasks also
|
67
34
|
creates a data schema table to mirror the usual schema migrations
|
68
|
-
table to track all
|
35
|
+
table to track all migrations.
|
69
36
|
|
70
37
|
## Rails Support
|
71
38
|
|
@@ -175,14 +142,15 @@ Run tests for a specific version of Rails
|
|
175
142
|
|
176
143
|
```
|
177
144
|
bundle exec appraisal install
|
178
|
-
bundle exec appraisal rails-5.
|
145
|
+
bundle exec appraisal rails-5.1 rspec
|
179
146
|
bundle exec appraisal rails-5.2 rspec
|
147
|
+
bundle exec appraisal rails-6.0 rspec
|
180
148
|
```
|
181
149
|
|
182
150
|
## Thanks
|
183
151
|
|
184
152
|
[Andrew J Vargo](http://github.com/ajvargo) Andrew was the original creator and maintainer of this project!
|
185
153
|
|
186
|
-
[Jeremy Durham](http://jeremydurham.com/) for fleshing out the idea
|
154
|
+
[Jeremy Durham](http://jeremydurham.com/) for fleshing out the idea and providing guidance.
|
187
155
|
|
188
156
|
You! Yes, you. Thanks for checking it out.
|
data/gemfiles/rails_5.1.gemfile
CHANGED
data/gemfiles/rails_5.2.gemfile
CHANGED
data/gemfiles/rails_6.0.gemfile
CHANGED
@@ -8,6 +8,33 @@ module DataMigrate
|
|
8
8
|
class DatabaseTasks
|
9
9
|
extend ActiveRecord::Tasks::DatabaseTasks
|
10
10
|
|
11
|
+
class << self
|
12
|
+
def schema_file_type(_format = nil)
|
13
|
+
"data_schema.rb"
|
14
|
+
end
|
15
|
+
|
16
|
+
def dump_filename(namespace, format = ActiveRecord::Base.schema_format)
|
17
|
+
filename = if namespace == "primary"
|
18
|
+
schema_file_type(format)
|
19
|
+
else
|
20
|
+
"#{namespace}_#{schema_file_type(format)}"
|
21
|
+
end
|
22
|
+
|
23
|
+
ENV["DATA_SCHEMA"] || File.join(schema_location, filename)
|
24
|
+
end
|
25
|
+
|
26
|
+
def schema_location
|
27
|
+
db_dir
|
28
|
+
end
|
29
|
+
|
30
|
+
def check_schema_file(filename)
|
31
|
+
unless File.exist?(filename)
|
32
|
+
message = +%{#{filename} doesn't exist yet. Run `rake data:migrate` to create it, then try again.}
|
33
|
+
Kernel.abort message
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
11
38
|
# This overrides ActiveRecord::Tasks::DatabaseTasks
|
12
39
|
def self.schema_file(_format = nil)
|
13
40
|
File.join(db_dir, "data_schema.rb")
|
data/lib/data_migrate/version.rb
CHANGED
@@ -51,9 +51,7 @@ describe DataMigrate::DataMigrator do
|
|
51
51
|
end
|
52
52
|
|
53
53
|
it do
|
54
|
-
|
55
|
-
ActiveRecord::Base.connection.table_exists?("data_migrations")
|
56
|
-
).to eq false
|
54
|
+
ActiveRecord::Migration.drop_table("data_migrations") rescue nil
|
57
55
|
subject.assure_data_schema_table
|
58
56
|
expect(
|
59
57
|
ActiveRecord::Base.connection.table_exists?("data_migrations")
|
@@ -39,6 +39,7 @@ describe DataMigrate::DatabaseTasks do
|
|
39
39
|
data_migrations_path
|
40
40
|
}
|
41
41
|
allow(DataMigrate::DataMigrator).to receive(:db_config) { db_config }
|
42
|
+
ActiveRecord::Base.configurations[:test] =db_config
|
42
43
|
ActiveRecord::Base.establish_connection(db_config)
|
43
44
|
end
|
44
45
|
|
@@ -58,7 +59,7 @@ describe DataMigrate::DatabaseTasks do
|
|
58
59
|
end
|
59
60
|
|
60
61
|
before do
|
61
|
-
ActiveRecord::Base.establish_connection(db_config)
|
62
|
+
# ActiveRecord::Base.establish_connection(db_config)
|
62
63
|
ActiveRecord::SchemaMigration.create_table
|
63
64
|
|
64
65
|
allow(DataMigrate::SchemaMigration).to receive(:migrations_paths) {
|
@@ -86,6 +87,35 @@ describe DataMigrate::DatabaseTasks do
|
|
86
87
|
end
|
87
88
|
end
|
88
89
|
|
90
|
+
describe :load_schema_current do
|
91
|
+
before do
|
92
|
+
allow(DataMigrate::DataMigrator).to receive(:full_migrations_path).and_return(migration_path)
|
93
|
+
end
|
94
|
+
|
95
|
+
it "loads the current schema file" do
|
96
|
+
if Rails::VERSION::MAJOR < 6
|
97
|
+
skip("Not implemented for Rails lower than 6")
|
98
|
+
end
|
99
|
+
allow(subject).to receive(:schema_location).and_return("spec/db/data/schema/")
|
100
|
+
|
101
|
+
subject.load_schema_current
|
102
|
+
versions = DataMigrate::DataSchemaMigration.normalized_versions
|
103
|
+
expect(versions.count).to eq(2)
|
104
|
+
end
|
105
|
+
|
106
|
+
it "loads schema file that has not been update with latest data migrations" do
|
107
|
+
if Rails::VERSION::MAJOR < 6
|
108
|
+
skip("Not implemented for Rails lower than 6")
|
109
|
+
end
|
110
|
+
|
111
|
+
allow(subject).to receive(:schema_location).and_return("spec/db/data/partial_schema/")
|
112
|
+
|
113
|
+
subject.load_schema_current
|
114
|
+
versions = DataMigrate::DataSchemaMigration.normalized_versions
|
115
|
+
expect(versions.count).to eq(1)
|
116
|
+
end
|
117
|
+
end
|
118
|
+
|
89
119
|
describe :forward do
|
90
120
|
|
91
121
|
it "run forward default amount of times" do
|
data/spec/spec_helper.rb
CHANGED
@@ -10,9 +10,16 @@ RSpec.configure do |config|
|
|
10
10
|
mocks.verify_partial_doubles = true
|
11
11
|
end
|
12
12
|
|
13
|
+
config.after(:each) do
|
14
|
+
DataMigrate.configure do |config|
|
15
|
+
config.data_migrations_path = @prev_data_migrations_path
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
13
19
|
config.before(:each) do |example|
|
14
20
|
if example.metadata[:no_override]
|
15
21
|
else
|
22
|
+
@prev_data_migrations_path = DataMigrate.config.data_migrations_path
|
16
23
|
if Rails::VERSION::MAJOR == 6
|
17
24
|
DataMigrate.configure do |config|
|
18
25
|
config.data_migrations_path = "spec/db/6.0"
|
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.0
|
4
|
+
version: 6.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Andrew J Vargo
|
@@ -197,7 +197,6 @@ files:
|
|
197
197
|
- data_migrate.gemspec
|
198
198
|
- gemfiles/rails_4.1.gemfile
|
199
199
|
- gemfiles/rails_4.2.gemfile
|
200
|
-
- gemfiles/rails_5.0.gemfile
|
201
200
|
- gemfiles/rails_5.1.gemfile
|
202
201
|
- gemfiles/rails_5.2.gemfile
|
203
202
|
- gemfiles/rails_6.0.gemfile
|
@@ -250,6 +249,8 @@ files:
|
|
250
249
|
- spec/db/data/20091231235959_some_name.rb
|
251
250
|
- spec/db/data/20171231235959_super_update.rb
|
252
251
|
- spec/db/data/20181128000207_excluded_file.rb.other_ext
|
252
|
+
- spec/db/data/partial_schema/data_schema.rb
|
253
|
+
- spec/db/data/schema/data_schema.rb
|
253
254
|
- spec/db/migrate/4.2/20131111111111_late_migration.rb
|
254
255
|
- spec/db/migrate/4.2/20202020202011_db_migration.rb
|
255
256
|
- spec/db/migrate/5.0/20131111111111_late_migration.rb
|