webdack-uuid_migration 1.2.0 → 1.3.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
|
[![Build Status](https://travis-ci.org/kreatio-sw/webdack-uuid_migration.svg?branch=master)](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.
|