webdack-uuid_migration 1.2.0 → 1.3.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 +12 -6
- data/README.md +30 -17
- data/gemfiles/rails42.gemfile +3 -0
- data/gemfiles/rails52.gemfile +1 -1
- data/gemfiles/rails60.gemfile +5 -0
- data/lib/webdack/uuid_migration/schema_helpers.rb +8 -7
- data/lib/webdack/uuid_migration/version.rb +1 -1
- data/webdack-uuid_migration.gemspec +1 -1
- metadata +6 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b3954bb0c6c9a9722b6ed24293b37a4bc644b47c48d63bad5a1950f2ecd9f9c3
|
4
|
+
data.tar.gz: 57f8f13689f5706525e6fd5bdd0f757b6708868a78b9ae275c625ee0bd6f515f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c04960961a11f997c245afb2975647146b45cc5101efdcfeaf78685d56c9475efee6327a30eb3523f0df9c2cbcf50c8280321bfc13ff3af6919e1ba6558d5c79
|
7
|
+
data.tar.gz: b0ac076d70cfdf22c6081f4871c77e370b99ad7359ca4026e339c5a8044786a02d414c62e35ac013ab30d74d9a4c69d7f6ba58f4a8d3989a5db8a44b736ebe92
|
data/.travis.yml
CHANGED
@@ -1,14 +1,20 @@
|
|
1
1
|
rvm:
|
2
|
-
- 2.
|
3
|
-
- 2.
|
4
|
-
- 2.
|
2
|
+
- 2.6.5
|
3
|
+
- 2.5.7
|
4
|
+
- 2.4.9
|
5
5
|
|
6
6
|
gemfile:
|
7
|
-
- gemfiles/
|
8
|
-
- gemfiles/
|
7
|
+
- gemfiles/rails60.gemfile
|
8
|
+
- gemfiles/rails52.gemfile
|
9
9
|
- gemfiles/rails51.gemfile
|
10
|
+
- gemfiles/rails42.gemfile
|
11
|
+
|
12
|
+
matrix:
|
13
|
+
exclude:
|
14
|
+
- rvm: 2.4.9
|
15
|
+
gemfile: gemfiles/rails60.gemfile
|
10
16
|
|
11
17
|
script: bundle exec rspec spec
|
12
18
|
|
13
19
|
addons:
|
14
|
-
postgresql: "9.4"
|
20
|
+
postgresql: "9.4"
|
data/README.md
CHANGED
@@ -3,31 +3,46 @@
|
|
3
3
|
[](https://travis-ci.org/kreatio-sw/webdack-uuid_migration)
|
4
4
|
|
5
5
|
**This project is actively maintained. Please report issues and/or create
|
6
|
-
pull requests if you face any issues.**
|
6
|
+
pull requests if you face any issues.**
|
7
7
|
|
8
|
-
|
9
|
-
|
8
|
+
There are plenty of tutorials around the web on how to use UUIDs with Rails.
|
9
|
+
However, there is no reliable tutorial to help convert an in-production Rails application
|
10
|
+
from Integer ids to UUIDs.
|
11
|
+
|
12
|
+
This gem has helper methods to convert Integer columns to UUIDs during migrations.
|
13
|
+
It supports migrating primary key columns, relations, and polymorphic relations as well.
|
14
|
+
|
15
|
+
It is designed to be very fast and is suitable for inplace migration of schema and data.
|
16
|
+
It has been used in production since 2014.
|
17
|
+
|
18
|
+
This only supports PostgreSQL.
|
10
19
|
|
11
20
|
## Documentation
|
12
21
|
|
13
|
-
http://www.rubydoc.info/gems/webdack-uuid_migration
|
22
|
+
http://www.rubydoc.info/gems/webdack-uuid_migration (Link is dead).
|
14
23
|
|
15
24
|
## Installation
|
16
25
|
|
17
26
|
Add this line to your application's Gemfile:
|
18
27
|
|
28
|
+
```ruby
|
19
29
|
gem 'webdack-uuid_migration'
|
30
|
+
```
|
20
31
|
|
21
32
|
And then execute:
|
22
33
|
|
34
|
+
```bash
|
23
35
|
$ bundle
|
36
|
+
```
|
24
37
|
|
25
38
|
Or install it yourself as:
|
26
39
|
|
40
|
+
```bash
|
27
41
|
$ gem install webdack-uuid_migration
|
28
|
-
|
29
|
-
|
30
|
-
|
42
|
+
```
|
43
|
+
|
44
|
+
This gem is needed only during database migrations.
|
45
|
+
Once the database has been migrated in all environments,
|
31
46
|
this gem can safely be removed from your applications Gemfile.
|
32
47
|
|
33
48
|
## Usage
|
@@ -38,6 +53,7 @@ this gem can safely be removed from your applications Gemfile.
|
|
38
53
|
|
39
54
|
Example:
|
40
55
|
|
56
|
+
```ruby
|
41
57
|
# You must explicitly require it in your migration file
|
42
58
|
require 'webdack/uuid_migration/helpers'
|
43
59
|
|
@@ -62,6 +78,7 @@ Example:
|
|
62
78
|
end
|
63
79
|
end
|
64
80
|
end
|
81
|
+
```
|
65
82
|
|
66
83
|
Integer values are converted to UUID by padding 0's to the left. This makes it possible to
|
67
84
|
retrieve old id in future.
|
@@ -78,7 +95,7 @@ This function will only work with Rails 4.2 or newer.
|
|
78
95
|
To update a primary key and all columns referencing it please use
|
79
96
|
{Webdack::UUIDMigration::Helpers#primary_key_and_all_references_to_uuid}. For example:
|
80
97
|
|
81
|
-
```
|
98
|
+
```ruby
|
82
99
|
class MigrateWithFk < ActiveRecord::Migration
|
83
100
|
def change
|
84
101
|
reversible do |dir|
|
@@ -118,6 +135,7 @@ following steps:
|
|
118
135
|
|
119
136
|
Example:
|
120
137
|
|
138
|
+
```ruby
|
121
139
|
# Student -- belongs_to :institution, :polymorphic => true
|
122
140
|
# An institution is either a School or a College
|
123
141
|
# College is migrated to use UUID as primary key
|
@@ -133,18 +151,13 @@ Example:
|
|
133
151
|
columns_to_uuid :students, :institution_id
|
134
152
|
|
135
153
|
# See the rspec test case in spec folder for full example
|
136
|
-
|
154
|
+
```
|
137
155
|
|
138
156
|
## Compatibility
|
139
157
|
|
140
|
-
Works
|
141
|
-
Ruby versions:
|
158
|
+
Works with Rails 4.2+, 5 & 6. It uses Rails 4's out-of-the-box UUID support for PostgreSQL.
|
142
159
|
|
143
|
-
|
144
|
-
- 2.4.3
|
145
|
-
- 2.5.0
|
146
|
-
|
147
|
-
Tested with Rails 5.0.x and 5.1.x. Reported working with 5.2.0 alpha.
|
160
|
+
See https://travis-ci.org/kreatio-sw/webdack-uuid_migration for current build matrix.
|
148
161
|
|
149
162
|
To run the test suite:
|
150
163
|
|
@@ -156,7 +169,7 @@ To run the test suite:
|
|
156
169
|
|
157
170
|
- Users of the Gem
|
158
171
|
- [Felix Bünemann](https://github.com/felixbuenemann) for checking compatibility with Rails 4.1
|
159
|
-
- [Nick Schwaderer](https://github.com/Schwad)
|
172
|
+
- [Nick Schwaderer](https://github.com/Schwad) Rails 5.2.x compatibility
|
160
173
|
- [Kelsey Hannan](https://github.com/KelseyDH) Upgrading to `pgcrypto`
|
161
174
|
|
162
175
|
## Contributing
|
data/gemfiles/rails42.gemfile
CHANGED
data/gemfiles/rails52.gemfile
CHANGED
@@ -5,13 +5,14 @@ module Webdack
|
|
5
5
|
to_primary_key = primary_key(to_table_name)
|
6
6
|
|
7
7
|
|
8
|
-
fk_info = select_all <<-SQL
|
9
|
-
SELECT t2.oid::regclass::text AS to_table, a2.attname AS primary_key, t1.relname as from_table, a1.attname AS column, c.conname AS name, c.confupdtype AS on_update, c.confdeltype AS on_delete
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
8
|
+
fk_info = select_all <<-SQL
|
9
|
+
SELECT t2.oid::regclass::text AS to_table, a2.attname AS primary_key, t1.relname as from_table, a1.attname AS column, c.conname AS name, c.confupdtype AS on_update, c.confdeltype AS on_delete
|
10
|
+
FROM pg_constraint c
|
11
|
+
JOIN pg_class t1 ON c.conrelid = t1.oid
|
12
|
+
JOIN pg_class t2 ON c.confrelid = t2.oid
|
13
|
+
JOIN pg_attribute a1 ON a1.attnum = c.conkey[1] AND a1.attrelid = t1.oid
|
14
|
+
JOIN pg_attribute a2 ON a2.attnum = c.confkey[1] AND a2.attrelid = t2.oid
|
15
|
+
JOIN pg_namespace t3 ON c.connamespace = t3.oid
|
15
16
|
WHERE c.contype = 'f'
|
16
17
|
AND t2.oid::regclass::text = #{quote(to_table_name)}
|
17
18
|
AND a2.attname = #{quote(to_primary_key)}
|
@@ -22,7 +22,7 @@ Gem::Specification.new do |spec|
|
|
22
22
|
spec.add_development_dependency "rake"
|
23
23
|
spec.add_development_dependency "yard"
|
24
24
|
spec.add_development_dependency "rspec"
|
25
|
-
spec.add_development_dependency "pg", '<
|
25
|
+
spec.add_development_dependency "pg", '< 2.0'
|
26
26
|
spec.add_development_dependency 'gem-release'
|
27
27
|
|
28
28
|
spec.add_dependency 'activerecord', '>= 4.0'
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: webdack-uuid_migration
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Deepak Kumar
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2019-11-29 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -72,14 +72,14 @@ dependencies:
|
|
72
72
|
requirements:
|
73
73
|
- - "<"
|
74
74
|
- !ruby/object:Gem::Version
|
75
|
-
version: '
|
75
|
+
version: '2.0'
|
76
76
|
type: :development
|
77
77
|
prerelease: false
|
78
78
|
version_requirements: !ruby/object:Gem::Requirement
|
79
79
|
requirements:
|
80
80
|
- - "<"
|
81
81
|
- !ruby/object:Gem::Version
|
82
|
-
version: '
|
82
|
+
version: '2.0'
|
83
83
|
- !ruby/object:Gem::Dependency
|
84
84
|
name: gem-release
|
85
85
|
requirement: !ruby/object:Gem::Requirement
|
@@ -126,6 +126,7 @@ files:
|
|
126
126
|
- gemfiles/rails50.gemfile
|
127
127
|
- gemfiles/rails51.gemfile
|
128
128
|
- gemfiles/rails52.gemfile
|
129
|
+
- gemfiles/rails60.gemfile
|
129
130
|
- lib/webdack/uuid_migration.rb
|
130
131
|
- lib/webdack/uuid_migration/helpers.rb
|
131
132
|
- lib/webdack/uuid_migration/schema_helpers.rb
|
@@ -161,8 +162,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
161
162
|
- !ruby/object:Gem::Version
|
162
163
|
version: '0'
|
163
164
|
requirements: []
|
164
|
-
|
165
|
-
rubygems_version: 2.7.3
|
165
|
+
rubygems_version: 3.0.1
|
166
166
|
signing_key:
|
167
167
|
specification_version: 4
|
168
168
|
summary: Useful helpers to migrate Integer id columns to UUID in PostgreSql.
|