nondestructive_migrations 1.0 → 1.1
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 +5 -13
- data/lib/active_record/data_migration.rb +52 -0
- data/lib/nondestructive_migrations.rb +1 -0
- data/lib/nondestructive_migrations/railtie.rb +1 -1
- data/lib/nondestructive_migrator.rb +30 -1
- metadata +10 -10
checksums.yaml
CHANGED
@@ -1,15 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
|
5
|
-
data.tar.gz: !binary |-
|
6
|
-
OTQ4YTk5Y2M4NDU1ODMzYTJlZDgzZGM0ODdjZmFhYjg3NTVhNzBiNg==
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 52efa8e5de4b6c6e944b2f49f50bc6b8c36f15cc
|
4
|
+
data.tar.gz: bab0c62fa9b1c21b00b3b9f9e9d5001df7ce47c8
|
7
5
|
SHA512:
|
8
|
-
metadata.gz:
|
9
|
-
|
10
|
-
ZDM4N2E4OTMyZWQwOTFlNWExOTFmYTI1ZDkxZjNmMjNlYWE4ZDQyNGMzNzcy
|
11
|
-
ZTc1MTA3MjE0YzhkZmE0OWJmNzQyMzkzZmEzNTc1NjU5YTI2MzM=
|
12
|
-
data.tar.gz: !binary |-
|
13
|
-
ZmQyYTkyZTg1Yjc2NzZkZWY5ODc1NWQzYWI1MjY0NDdmN2EyYjUxMTk3MzFk
|
14
|
-
MTBkZWMxOGQ2ZjA5YWZmZTUxMjI2MTI1OGNhMTEyMjBjMGQxNjhlZjc5YzVi
|
15
|
-
OTA4YzY2OWJkMTYzMTFmMjFiZTM1YTBkYWUzZTI4MWQ5ZmZmMTU=
|
6
|
+
metadata.gz: dc9c38949a5f361b4cf70ddef8282df6301745bd2bb45e2b1742e5f58f0713f75b4fad42d518bd2c28a8e2d9b7b6b155b94b46d9c4eeb1fd18e7dc6f6c962215
|
7
|
+
data.tar.gz: 434c533281a6546d3b3c453e333c958adae75e21539657c6d48f17fa7a48ac25ebe40e2257ef9f5b52ea4c05c621c27140213f5f44e7c56c3790de9074804dcc
|
@@ -0,0 +1,52 @@
|
|
1
|
+
require 'active_record/scoping/default'
|
2
|
+
require 'active_record/scoping/named'
|
3
|
+
require 'active_record/base'
|
4
|
+
|
5
|
+
module ActiveRecord
|
6
|
+
class DataMigration < ActiveRecord::Base
|
7
|
+
class << self
|
8
|
+
def primary_key
|
9
|
+
nil
|
10
|
+
end
|
11
|
+
|
12
|
+
def table_name
|
13
|
+
"#{table_name_prefix}data_migrations#{table_name_suffix}"
|
14
|
+
end
|
15
|
+
|
16
|
+
def index_name
|
17
|
+
"#{table_name_prefix}unique_data_migrations#{table_name_suffix}"
|
18
|
+
end
|
19
|
+
|
20
|
+
def table_exists?
|
21
|
+
connection.table_exists?(table_name)
|
22
|
+
end
|
23
|
+
|
24
|
+
def create_table(limit=nil)
|
25
|
+
unless table_exists?
|
26
|
+
version_options = {null: false}
|
27
|
+
version_options[:limit] = limit if limit
|
28
|
+
|
29
|
+
connection.create_table(table_name, id: false) do |t|
|
30
|
+
t.column :version, :string, version_options
|
31
|
+
end
|
32
|
+
connection.add_index table_name, :version, unique: true, name: index_name
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
def drop_table
|
37
|
+
if table_exists?
|
38
|
+
connection.remove_index table_name, name: index_name
|
39
|
+
connection.drop_table(table_name)
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
def normalize_migration_number(number)
|
44
|
+
"%.3d" % number.to_i
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
48
|
+
def version
|
49
|
+
super.to_i
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
@@ -1,13 +1,42 @@
|
|
1
|
+
|
2
|
+
|
3
|
+
|
1
4
|
class NondestructiveMigrator < ActiveRecord::Migrator
|
2
5
|
# This class related to data migration.
|
3
6
|
# Used in rake tasks (rake data:[migrate|rollback|up|down])
|
7
|
+
|
8
|
+
def record_version_state_after_migrating(version)
|
9
|
+
if down?
|
10
|
+
migrated.delete(version)
|
11
|
+
ActiveRecord::DataMigration.where(:version => version.to_s).delete_all
|
12
|
+
else
|
13
|
+
migrated << version
|
14
|
+
ActiveRecord::DataMigration.create!(:version => version.to_s)
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
|
4
19
|
class <<self
|
5
20
|
def migrations_path
|
6
21
|
MIGRATIONS_PATH
|
7
22
|
end
|
8
|
-
|
23
|
+
|
9
24
|
def schema_migrations_table_name
|
10
25
|
'data_migrations'
|
11
26
|
end
|
27
|
+
|
28
|
+
def schema_migrations_table_name
|
29
|
+
ActiveRecord::DataMigration.table_name
|
30
|
+
end
|
31
|
+
|
32
|
+
def get_all_versions(connection = ActiveRecord::Base.connection)
|
33
|
+
if connection.table_exists?(schema_migrations_table_name)
|
34
|
+
ActiveRecord::DataMigration.all.map { |x| x.version.to_i }.sort
|
35
|
+
else
|
36
|
+
[]
|
37
|
+
end
|
38
|
+
end
|
12
39
|
end
|
13
40
|
end
|
41
|
+
|
42
|
+
|
metadata
CHANGED
@@ -1,29 +1,29 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: nondestructive_migrations
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: '1.
|
4
|
+
version: '1.1'
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jason Fleetwood-Boldt
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2015-03-12 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activerecord
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- -
|
17
|
+
- - ">="
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: '0'
|
19
|
+
version: '4.0'
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
|
-
- -
|
24
|
+
- - ">="
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: '0'
|
26
|
+
version: '4.0'
|
27
27
|
description: Separate schema-only migrations from nondestrucitve (data) migrations
|
28
28
|
in your Rails app
|
29
29
|
email: jason@datatravels.com
|
@@ -31,6 +31,7 @@ executables: []
|
|
31
31
|
extensions: []
|
32
32
|
extra_rdoc_files: []
|
33
33
|
files:
|
34
|
+
- lib/active_record/data_migration.rb
|
34
35
|
- lib/generators/data_migration_generator.rb
|
35
36
|
- lib/generators/data_migration_install_generator.rb
|
36
37
|
- lib/generators/templates/create_data_migrations.rb
|
@@ -48,19 +49,18 @@ require_paths:
|
|
48
49
|
- lib
|
49
50
|
required_ruby_version: !ruby/object:Gem::Requirement
|
50
51
|
requirements:
|
51
|
-
- -
|
52
|
+
- - ">="
|
52
53
|
- !ruby/object:Gem::Version
|
53
54
|
version: '0'
|
54
55
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
55
56
|
requirements:
|
56
|
-
- -
|
57
|
+
- - ">="
|
57
58
|
- !ruby/object:Gem::Version
|
58
59
|
version: '0'
|
59
60
|
requirements: []
|
60
61
|
rubyforge_project:
|
61
|
-
rubygems_version: 2.
|
62
|
+
rubygems_version: 2.4.3
|
62
63
|
signing_key:
|
63
64
|
specification_version: 4
|
64
65
|
summary: Nondestructive (data-only) migrations for your Rails app
|
65
66
|
test_files: []
|
66
|
-
has_rdoc:
|