data_migrate 6.3.0 → 6.7.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 7fa861e31bdaa49b654d9c40b11b8a8871f5f8d5c3241d17e0072c43ecf4c0c2
4
- data.tar.gz: 9151be3e992b0271ded30d0bde83a0b57c2236e701762881b75f27a0663ba4a9
3
+ metadata.gz: 9d433e96cf05b528252be16a5e05c6143bf278ed36557099ace0747bf80b5653
4
+ data.tar.gz: 17a0001c0f9bb93507f3147d7ed13e947661d012fe67186e7b768d82635cba2d
5
5
  SHA512:
6
- metadata.gz: 3a4004c4a456a1b323add0ee2f7b3012c164763476f0be5957a202afc7388e22a1bc521272c6c359c0c0c0f14dc08b7528edc2ba19a908ac56a692ac1cc76832
7
- data.tar.gz: b8cc321107a19adf0ccae807d755f5743de9c97f8e0fb86db631473d4f169e8bbdd6f5a97cd6a187eb895417051c73379b1ad4cba390dca620835e874e4fa1b3
6
+ metadata.gz: 230f8dd3c66d6def374b32af7776f86360ee18df38c36ebb126ab2dd06832009ed95d52cd752d43415a0358a588f3e1ca972275ab01be38e0f6fa0f29e947655
7
+ data.tar.gz: 9f8d5ce9e098ab46d4eec6330630a577b1c5941d35762d5304a2e390a3b4815df50da374f23ad289865cfa2f02e77db02df4a0a9f5d45aed6314851924cd2d0d
data/.gitignore CHANGED
@@ -3,6 +3,9 @@
3
3
  *.lock
4
4
  gemfiles/.bundle
5
5
  spec/db/test.db
6
+ spec/db/other_test.db
7
+ spec/db/data_schema.rb
6
8
  .vscode/
7
9
  .DS_Store
8
10
  .idea/
11
+ vendor/
data/.travis.yml CHANGED
@@ -8,7 +8,10 @@ gemfile:
8
8
  - gemfiles/rails_5.1.gemfile
9
9
  - gemfiles/rails_5.2.gemfile
10
10
  - gemfiles/rails_6.0.gemfile
11
+ - gemfiles/rails_6.1.gemfile
11
12
  matrix:
12
13
  exclude:
13
14
  - rvm: 2.4.4
14
15
  gemfile: gemfiles/rails_6.0.gemfile
16
+ - rvm: 2.4.4
17
+ gemfile: gemfiles/rails_6.1.gemfile
data/Appraisals CHANGED
@@ -13,3 +13,7 @@ end
13
13
  appraise 'rails-6.0' do
14
14
  gem 'rails', '~> 6.0.0'
15
15
  end
16
+
17
+ appraise 'rails-6.1' do
18
+ gem 'rails', '~> 6.1.0'
19
+ end
data/Changelog.md CHANGED
@@ -1,5 +1,23 @@
1
1
  # Changelog
2
2
 
3
+ # 6.7.0
4
+
5
+ Add configuration for which database name is to be used for database migrations [lewhit](https://github.com/lewhit)
6
+ Add tests for Rails 6.1 [lewhit](https://github.com/lewhit)
7
+ Migrations files should end only in .rb [kroehre](https://github.com/kroehre)
8
+
9
+ ## 6.6.2
10
+ ## 6.6.1
11
+
12
+ configs_for deprecation notice [borama](https://github.com/borama)
13
+ ## 6.6.0
14
+
15
+ Allow data dump connection to be configured [lewhit](https://github.com/lewhit)
16
+
17
+ ## 6.4.0
18
+
19
+ Add primary key to data_migrations table [aandis](https://github.com/aandis)
20
+
3
21
  ## 6.3.0
4
22
 
5
23
  Add `abort_if_pending_migrations` rake tasks [tomgia](https://github.com/tomgia)
data/Gemfile.rails6.1 ADDED
@@ -0,0 +1,6 @@
1
+ source "http://rubygems.org"
2
+
3
+ # Specify your gem's dependencies in data_migrate.gemspec
4
+ gem 'rails', '~> 6.1.0'
5
+ gem 'sqlite3', "~> 1.4"
6
+ gemspec
data/README.md CHANGED
@@ -121,7 +121,15 @@ You can override this setting in `config/initializers/data_migrate.rb`
121
121
 
122
122
  ```ruby
123
123
  DataMigrate.configure do |config|
124
- config.data_migrations_path = "db/awesomepath/"
124
+ config.data_migrations_path = 'db/awesomepath/'
125
+ config.db_configuration = {
126
+ 'host' => '127.0.0.1',
127
+ 'database' => 'awesome_database',
128
+ 'adapter' => 'mysql2',
129
+ 'username' => 'root',
130
+ 'password' => nil,
131
+ }
132
+ config.spec_name = 'primary'
125
133
  end
126
134
 
127
135
  ```
@@ -0,0 +1,8 @@
1
+ # This file was generated by Appraisal
2
+
3
+ source "http://rubygems.org"
4
+
5
+ gem "rails", "5.0.7.2"
6
+ gem "sqlite3", "~> 1.4"
7
+
8
+ gemspec path: "../"
@@ -0,0 +1,8 @@
1
+ # This file was generated by Appraisal
2
+
3
+ source "http://rubygems.org"
4
+
5
+ gem "rails", "~> 6.1.0"
6
+ gem "sqlite3", "~> 1.4"
7
+
8
+ gemspec path: "../"
@@ -12,10 +12,12 @@ module DataMigrate
12
12
  end
13
13
 
14
14
  class Config
15
- attr_accessor :data_migrations_path
15
+ attr_accessor :data_migrations_path, :db_configuration, :spec_name
16
16
 
17
17
  def initialize
18
18
  @data_migrations_path = "db/data/"
19
+ @db_configuration = nil
20
+ @spec_name = nil
19
21
  end
20
22
  end
21
23
  end
@@ -76,17 +76,8 @@ module DataMigrate
76
76
 
77
77
  def create_table(sm_table)
78
78
  ActiveRecord::Base.connection.create_table(sm_table, id: false) do |schema_migrations_table|
79
- schema_migrations_table.column :version, :string, null: false
79
+ schema_migrations_table.string :version, primary_key: true
80
80
  end
81
-
82
- suffix = ActiveRecord::Base.table_name_suffix
83
- prefix = ActiveRecord::Base.table_name_prefix
84
- index_name = "#{prefix}unique_data_migrations#{suffix}"
85
-
86
- options = {unique: true, name: index_name}
87
- options[:length] = 191 if ActiveRecord::Base.connection_config[:adapter] == "mysql2"
88
-
89
- ActiveRecord::Base.connection.add_index sm_table, :version, options
90
81
  end
91
82
 
92
83
  def table_exists?(connection, table_name)
@@ -42,7 +42,7 @@ module DataMigrate
42
42
  # @param (String) filename
43
43
  # @return (MatchData)
44
44
  def match(filename)
45
- /(\d{14})_(.+)\.rb/.match(filename)
45
+ /(\d{14})_(.+)\.rb$/.match(filename)
46
46
  end
47
47
 
48
48
  def needs_migration?
@@ -75,8 +75,13 @@ module DataMigrate
75
75
  end
76
76
 
77
77
  def db_config
78
- ActiveRecord::Base.configurations[Rails.env || "development"] ||
79
- ENV["DATABASE_URL"]
78
+ env = Rails.env || "development"
79
+ ar_config = if (Rails::VERSION::MAJOR == 6 && Rails::VERSION::MINOR >= 1) || Rails::VERSION::MAJOR > 6
80
+ ActiveRecord::Base.configurations.configs_for(env_name: env).first
81
+ else
82
+ ActiveRecord::Base.configurations[env]
83
+ end
84
+ ar_config || ENV["DATABASE_URL"]
80
85
  end
81
86
  end
82
87
 
@@ -6,8 +6,8 @@ module DataMigrate
6
6
  ActiveRecord::Base.table_name_prefix + 'data_migrations' + ActiveRecord::Base.table_name_suffix
7
7
  end
8
8
 
9
- def index_name
10
- "#{table_name_prefix}unique_data_migrations#{table_name_suffix}"
9
+ def primary_key
10
+ "version"
11
11
  end
12
12
  end
13
13
  end
@@ -14,8 +14,8 @@ module DataMigrate
14
14
  ActiveRecord::Base.table_name_prefix + "data_migrations" + ActiveRecord::Base.table_name_suffix
15
15
  end
16
16
 
17
- def index_name
18
- "#{table_name_prefix}unique_data_migrations#{table_name_suffix}"
17
+ def primary_key
18
+ "version"
19
19
  end
20
20
  end
21
21
 
@@ -14,8 +14,8 @@ module DataMigrate
14
14
  ActiveRecord::Base.table_name_prefix + 'data_migrations' + ActiveRecord::Base.table_name_suffix
15
15
  end
16
16
 
17
- def index_name
18
- "#{table_name_prefix}unique_data_migrations#{table_name_suffix}"
17
+ def primary_key
18
+ "version"
19
19
  end
20
20
  end
21
21
 
@@ -21,7 +21,14 @@ module DataMigrate
21
21
  end
22
22
 
23
23
  def self.migrations_paths
24
- Rails.application.config.paths["db/migrate"].to_a
24
+ spec_name = DataMigrate.config.spec_name
25
+ if spec_name && Rails.version > '6.1'
26
+ ActiveRecord::Base.configurations.configs_for(env_name: Rails.env, name: spec_name).migrations_paths
27
+ elsif spec_name
28
+ ActiveRecord::Base.configurations.configs_for(env_name: Rails.env, spec_name: spec_name).migrations_paths
29
+ else
30
+ Rails.application.config.paths["db/migrate"].to_a
31
+ end
25
32
  end
26
33
 
27
34
  def self.sort_string(migration)
@@ -6,6 +6,16 @@ module DataMigrate
6
6
  @migrations_paths ||= DataMigrate.config.data_migrations_path
7
7
  end
8
8
 
9
+ def dump
10
+ if ActiveRecord::Base.dump_schema_after_migration
11
+ filename = DataMigrate::DatabaseTasks.schema_file
12
+ ActiveRecord::Base.establish_connection(DataMigrate.config.db_configuration) if DataMigrate.config.db_configuration
13
+ File.open(filename, "w:utf-8") do |file|
14
+ DataMigrate::SchemaDumper.dump(ActiveRecord::Base.connection, file)
15
+ end
16
+ end
17
+ end
18
+
9
19
  def migrate
10
20
  DataMigrate::DataMigrator.assure_data_schema_table
11
21
  target_version = ENV["VERSION"] ? ENV["VERSION"].to_i : nil
@@ -1,3 +1,3 @@
1
1
  module DataMigrate
2
- VERSION = "6.3.0".freeze
2
+ VERSION = "6.7.0".freeze
3
3
  end
@@ -82,6 +82,12 @@ describe DataMigrate::DataMigrator do
82
82
  end
83
83
  end
84
84
 
85
+ context "when the file doesn't end in .rb" do
86
+ it "returns nil" do
87
+ expect(subject.match("20091231235959_some_name.rb.un~")).to be_nil
88
+ end
89
+ end
90
+
85
91
  context "when the file matches" do
86
92
  it "returns a valid MatchData object" do
87
93
  match_data = subject.match("20091231235959_some_name.rb")
@@ -9,8 +9,8 @@ describe DataMigrate::DataSchemaMigration do
9
9
  end
10
10
 
11
11
  describe :index_name do
12
- it "returns correct index name" do
13
- expect(subject.index_name).to eq("unique_data_migrations")
12
+ it "returns correct primary key name" do
13
+ expect(subject.primary_key).to eq("version")
14
14
  end
15
15
  end
16
16
  end
@@ -39,8 +39,14 @@ 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
43
42
  ActiveRecord::Base.establish_connection(db_config)
43
+ if Rails.version >= '6.1'
44
+ hash_config = ActiveRecord::DatabaseConfigurations::HashConfig.new('test', 'test', db_config)
45
+ config_obj = ActiveRecord::DatabaseConfigurations.new([hash_config])
46
+ allow(ActiveRecord::Base).to receive(:configurations).and_return(config_obj)
47
+ else
48
+ ActiveRecord::Base.configurations[:test] = db_config
49
+ end
44
50
  end
45
51
 
46
52
  describe :schema_file do
@@ -59,7 +65,6 @@ describe DataMigrate::DatabaseTasks do
59
65
  end
60
66
 
61
67
  before do
62
- # ActiveRecord::Base.establish_connection(db_config)
63
68
  ActiveRecord::SchemaMigration.create_table
64
69
 
65
70
  allow(DataMigrate::SchemaMigration).to receive(:migrations_paths) {
@@ -14,6 +14,6 @@ describe subject do
14
14
  it "uses correct index name" do
15
15
  expect(subject).to receive(:table_name_prefix) { "" }
16
16
  expect(subject).to receive(:table_name_suffix) { "" }
17
- expect(subject.index_name).to eq("unique_data_migrations")
17
+ expect(subject.primary_key).to eq("version")
18
18
  end
19
19
  end
@@ -68,4 +68,33 @@ describe DataMigrate::SchemaMigration do
68
68
  expect(versions.count).to eq(0)
69
69
  end
70
70
  end
71
+
72
+ if Rails.version > '6'
73
+ describe :migrations_paths do
74
+ context 'when a db_name is configured' do
75
+ let(:paths) { ['spec/db/migrate/6.0', 'spec/db/components/migrate/6.0'] }
76
+
77
+ if Rails.version > '6.1'
78
+ before do
79
+ allow(ActiveRecord::Base.configurations.configs_for(env_name: 'test', name: 'primary')).to receive(:migrations_paths).and_return(paths)
80
+ DataMigrate.configure do |config|
81
+ config.spec_name = 'primary'
82
+ end
83
+ end
84
+ else
85
+ before do
86
+ allow(ActiveRecord::Base.configurations.configs_for(env_name: 'test', spec_name: 'primary')).to receive(:migrations_paths).and_return(paths)
87
+ DataMigrate.configure do |config|
88
+ config.spec_name = 'primary'
89
+ end
90
+ end
91
+ end
92
+
93
+ it 'lists schema migration paths' do
94
+ expect(subject.migrations_paths.size).to eq(2)
95
+ expect(subject.migrations_paths).to eq(paths)
96
+ end
97
+ end
98
+ end
99
+ end
71
100
  end
@@ -3,6 +3,57 @@
3
3
  require "spec_helper"
4
4
 
5
5
  describe DataMigrate::Tasks::DataMigrateTasks do
6
+ describe :dump do
7
+ let(:db_config) do
8
+ {
9
+ adapter: "sqlite3",
10
+ database: "spec/db/other_test.db"
11
+ }
12
+ end
13
+
14
+ before do
15
+ allow(DataMigrate::DataMigrator).to receive(:db_config) { db_config }
16
+ allow(DataMigrate::DatabaseTasks).to receive(:db_dir).and_return("spec/db")
17
+ end
18
+
19
+ after do
20
+ ActiveRecord::Migration.drop_table("data_migrations")
21
+ end
22
+
23
+ context 'when not given a separate db config' do
24
+ it 'does not override the default connection' do
25
+ DataMigrate::Tasks::DataMigrateTasks.migrate
26
+ expect(ActiveRecord::Base).not_to receive(:establish_connection)
27
+ expect(DataMigrate::SchemaDumper).to receive(:dump)
28
+ DataMigrate::Tasks::DataMigrateTasks.dump
29
+ end
30
+ end
31
+
32
+ context 'when given ' do
33
+ let(:override_config) do
34
+ {
35
+ 'host' => '127.0.0.1',
36
+ 'database' => 'other_test',
37
+ 'adapter' => 'sqlite3',
38
+ 'username' => 'root',
39
+ 'password' => nil,
40
+ }
41
+ end
42
+
43
+ before do
44
+ DataMigrate.configure do |config|
45
+ config.db_configuration = override_config
46
+ end
47
+ end
48
+
49
+ it 'overrides the default connection' do
50
+ DataMigrate::Tasks::DataMigrateTasks.migrate
51
+ expect(ActiveRecord::Base).to receive(:establish_connection).with(override_config)
52
+ DataMigrate::Tasks::DataMigrateTasks.dump
53
+ end
54
+ end
55
+ end
56
+
6
57
  describe :migrate do
7
58
  let(:db_config) do
8
59
  {
@@ -10,12 +61,12 @@ describe DataMigrate::Tasks::DataMigrateTasks do
10
61
  database: "spec/db/test.db"
11
62
  }
12
63
  end
13
-
64
+
14
65
  before do
15
66
  allow(DataMigrate::DataMigrator).to receive(:db_config) { db_config }
16
67
  ActiveRecord::Base.establish_connection(db_config)
17
68
  end
18
-
69
+
19
70
  after do
20
71
  ActiveRecord::Migration.drop_table("data_migrations")
21
72
  end
@@ -54,9 +105,9 @@ describe DataMigrate::Tasks::DataMigrateTasks do
54
105
  }, {
55
106
  name: 'B',
56
107
  version: 2
57
- }]
108
+ }]
58
109
  end
59
-
110
+
60
111
  it "should abort with given message and print names and versions of pending migrations" do
61
112
  expect { subject }
62
113
  .to raise_error(SystemExit, message)
@@ -0,0 +1,2 @@
1
+ # encoding: UTF-8
2
+ DataMigrate::Data.define(version: 20091231235959)
@@ -0,0 +1,2 @@
1
+ # encoding: UTF-8
2
+ DataMigrate::Data.define(version: 20171231235959)
data/tasks/databases.rake CHANGED
@@ -343,19 +343,14 @@ namespace :data do
343
343
 
344
344
  desc "Create a db/data_schema.rb file that stores the current data version"
345
345
  task dump: :environment do
346
- if ActiveRecord::Base.dump_schema_after_migration
347
- filename = DataMigrate::DatabaseTasks.schema_file
348
- File.open(filename, "w:utf-8") do |file|
349
- DataMigrate::SchemaDumper.dump(ActiveRecord::Base.connection, file)
350
- end
351
- end
346
+ DataMigrate::Tasks::DataMigrateTasks.dump
352
347
 
353
348
  # Allow this task to be called as many times as required. An example
354
349
  # is the migrate:redo task, which calls other two internally
355
350
  # that depend on this one.
356
351
  Rake::Task["data:dump"].reenable
357
352
  end
358
-
353
+
359
354
  namespace :schema do
360
355
  desc "Load data_schema.rb file into the database"
361
356
  task load: :environment do
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.3.0
4
+ version: 6.7.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: 2020-03-11 00:00:00.000000000 Z
13
+ date: 2021-03-13 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: rails
@@ -191,15 +191,18 @@ files:
191
191
  - Gemfile.rails5
192
192
  - Gemfile.rails5.1
193
193
  - Gemfile.rails5.2
194
+ - Gemfile.rails6.1
194
195
  - LICENSE
195
196
  - README.md
196
197
  - Rakefile
197
198
  - data_migrate.gemspec
198
199
  - gemfiles/rails_4.1.gemfile
199
200
  - gemfiles/rails_4.2.gemfile
201
+ - gemfiles/rails_5.0.gemfile
200
202
  - gemfiles/rails_5.1.gemfile
201
203
  - gemfiles/rails_5.2.gemfile
202
204
  - gemfiles/rails_6.0.gemfile
205
+ - gemfiles/rails_6.1.gemfile
203
206
  - lib/capistrano/data_migrate.rb
204
207
  - lib/capistrano/data_migrate/migrate.rb
205
208
  - lib/data_migrate.rb
@@ -250,7 +253,9 @@ files:
250
253
  - spec/db/data/20171231235959_super_update.rb
251
254
  - spec/db/data/20181128000207_excluded_file.rb.other_ext
252
255
  - spec/db/data/partial_schema/data_schema.rb
256
+ - spec/db/data/partial_schema/test_data_schema.rb
253
257
  - spec/db/data/schema/data_schema.rb
258
+ - spec/db/data/schema/test_data_schema.rb
254
259
  - spec/db/migrate/4.2/20131111111111_late_migration.rb
255
260
  - spec/db/migrate/4.2/20202020202011_db_migration.rb
256
261
  - spec/db/migrate/5.0/20131111111111_late_migration.rb
@@ -288,7 +293,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
288
293
  - !ruby/object:Gem::Version
289
294
  version: '0'
290
295
  requirements: []
291
- rubygems_version: 3.0.3
296
+ rubygems_version: 3.2.3
292
297
  signing_key:
293
298
  specification_version: 4
294
299
  summary: Rake tasks to migrate data alongside schema changes.