global_uid 1.4.1 → 2.0.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 +7 -0
- data/lib/global_uid.rb +4 -1
- data/lib/global_uid/base.rb +5 -1
- data/lib/global_uid/migration_extension.rb +0 -1
- data/lib/global_uid/schema_dumper_extension.rb +27 -0
- metadata +57 -56
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 60e2ff56778cf4d67aa04abeb8a6993b5f8255f8
|
4
|
+
data.tar.gz: 2e5a5fc7ce6c1e96805b7d5455f58ec2f9ef233f
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 6aeec90fe60593600f2309326c8e53467a704d84bdb2a2d6b5afae9b3712c16bc708000fa0d92b1b4923b27314ea4055b28b07e93229c33229822bbfaec19ee9
|
7
|
+
data.tar.gz: 05e7b31c19b354c93bba6a2d891acd9f3a8a8a6d1e84d4a0bfbe4ce8d121a60f017f25765efd2d8f81319978b205c16ee2777d31a2383629d333d58270bfe462
|
data/lib/global_uid.rb
CHANGED
@@ -1,6 +1,7 @@
|
|
1
1
|
require "global_uid/base"
|
2
2
|
require "global_uid/active_record_extension"
|
3
3
|
require "global_uid/migration_extension"
|
4
|
+
require "global_uid/schema_dumper_extension"
|
4
5
|
|
5
6
|
module GlobalUid
|
6
7
|
VERSION = "1.4.1"
|
@@ -14,4 +15,6 @@ end
|
|
14
15
|
|
15
16
|
ActiveRecord::Base.send(:include, GlobalUid::ActiveRecordExtension)
|
16
17
|
ActiveRecord::ConnectionAdapters::AbstractAdapter.send(:include, GlobalUid::MigrationExtension)
|
17
|
-
|
18
|
+
if ActiveRecord::VERSION::MAJOR == 4
|
19
|
+
ActiveRecord::SchemaDumper.send(:prepend, GlobalUid::SchemaDumperExtension)
|
20
|
+
end
|
data/lib/global_uid/base.rb
CHANGED
@@ -28,7 +28,7 @@ module GlobalUid
|
|
28
28
|
type = options[:uid_type] || "bigint(21) UNSIGNED"
|
29
29
|
start_id = options[:start_id] || 1
|
30
30
|
|
31
|
-
engine_stmt =
|
31
|
+
engine_stmt = "ENGINE=#{global_uid_options[:storage_engine] || "MyISAM"}"
|
32
32
|
|
33
33
|
# TODO it would be nice to be able to set the engine or something to not be MySQL specific
|
34
34
|
with_connections do |connection|
|
@@ -195,6 +195,10 @@ module GlobalUid
|
|
195
195
|
connection.transaction do
|
196
196
|
start_id = connection.select_value("SELECT id from #{klass.global_uid_table} where stub='a' FOR UPDATE").to_i
|
197
197
|
connection.execute("update #{klass.global_uid_table} set id = id + #{n} * @@auto_increment_increment where stub='a'")
|
198
|
+
if self.global_uid_options[:storage_engine] =~ /InnoDB/i
|
199
|
+
# This is needed to reset the auto_increment counter on an InnoDB table.
|
200
|
+
connection.execute("ALTER TABLE #{klass.global_uid_table} AUTO_INCREMENT = 1")
|
201
|
+
end
|
198
202
|
end_res = connection.select_one("SELECT id, @@auto_increment_increment as inc from #{klass.global_uid_table} where stub='a'")
|
199
203
|
increment_by = end_res['inc'].to_i
|
200
204
|
end_id = end_res['id'].to_i
|
@@ -0,0 +1,27 @@
|
|
1
|
+
module GlobalUid
|
2
|
+
module SchemaDumperExtension
|
3
|
+
def table(table, stream)
|
4
|
+
io = super(table, StringIO.new)
|
5
|
+
schema = io.string
|
6
|
+
|
7
|
+
pk = get_pk(table)
|
8
|
+
columns = @connection.columns(table)
|
9
|
+
|
10
|
+
pkcol = columns.detect { |c| c.name == pk }
|
11
|
+
use_global_uid = !(pkcol.extra =~ /auto/i)
|
12
|
+
|
13
|
+
schema.sub!(/(create_table.*) do/, "\\1, use_global_uid: #{use_global_uid.inspect} do")
|
14
|
+
stream.write(schema)
|
15
|
+
stream
|
16
|
+
end
|
17
|
+
|
18
|
+
def get_pk(table)
|
19
|
+
if @connection.respond_to?(:pk_and_sequence_for)
|
20
|
+
pk, _ = @connection.pk_and_sequence_for(table)
|
21
|
+
elsif @connection.respond_to?(:primary_key)
|
22
|
+
pk = @connection.primary_key(table)
|
23
|
+
end
|
24
|
+
pk
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
metadata
CHANGED
@@ -1,160 +1,161 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: global_uid
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
5
|
-
prerelease:
|
4
|
+
version: 2.0.0
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- Ben Osheroff
|
9
8
|
autorequire:
|
10
9
|
bindir: bin
|
11
10
|
cert_chain: []
|
12
|
-
date: 2014-06
|
11
|
+
date: 2014-07-06 00:00:00.000000000 Z
|
13
12
|
dependencies:
|
14
13
|
- !ruby/object:Gem::Dependency
|
15
14
|
name: activerecord
|
16
15
|
requirement: !ruby/object:Gem::Requirement
|
17
|
-
none: false
|
18
16
|
requirements:
|
19
|
-
- -
|
17
|
+
- - ">="
|
20
18
|
- !ruby/object:Gem::Version
|
21
|
-
version:
|
19
|
+
version: 3.2.0
|
20
|
+
- - "<"
|
21
|
+
- !ruby/object:Gem::Version
|
22
|
+
version: '5.0'
|
22
23
|
type: :runtime
|
23
24
|
prerelease: false
|
24
25
|
version_requirements: !ruby/object:Gem::Requirement
|
25
|
-
none: false
|
26
26
|
requirements:
|
27
|
-
- -
|
27
|
+
- - ">="
|
28
28
|
- !ruby/object:Gem::Version
|
29
|
-
version:
|
29
|
+
version: 3.2.0
|
30
|
+
- - "<"
|
31
|
+
- !ruby/object:Gem::Version
|
32
|
+
version: '5.0'
|
30
33
|
- !ruby/object:Gem::Dependency
|
31
34
|
name: activesupport
|
32
35
|
requirement: !ruby/object:Gem::Requirement
|
33
|
-
none: false
|
34
36
|
requirements:
|
35
|
-
- -
|
37
|
+
- - ">="
|
36
38
|
- !ruby/object:Gem::Version
|
37
39
|
version: '0'
|
38
40
|
type: :runtime
|
39
41
|
prerelease: false
|
40
42
|
version_requirements: !ruby/object:Gem::Requirement
|
41
|
-
none: false
|
42
43
|
requirements:
|
43
|
-
- -
|
44
|
+
- - ">="
|
44
45
|
- !ruby/object:Gem::Version
|
45
46
|
version: '0'
|
46
47
|
- !ruby/object:Gem::Dependency
|
47
|
-
name:
|
48
|
+
name: mysql2
|
48
49
|
requirement: !ruby/object:Gem::Requirement
|
49
|
-
none: false
|
50
50
|
requirements:
|
51
|
-
- -
|
51
|
+
- - ">="
|
52
52
|
- !ruby/object:Gem::Version
|
53
|
-
version:
|
53
|
+
version: '0'
|
54
54
|
type: :development
|
55
55
|
prerelease: false
|
56
56
|
version_requirements: !ruby/object:Gem::Requirement
|
57
|
-
none: false
|
58
57
|
requirements:
|
59
|
-
- -
|
58
|
+
- - ">="
|
60
59
|
- !ruby/object:Gem::Version
|
61
|
-
version:
|
60
|
+
version: '0'
|
62
61
|
- !ruby/object:Gem::Dependency
|
63
|
-
name:
|
62
|
+
name: rake
|
64
63
|
requirement: !ruby/object:Gem::Requirement
|
65
|
-
none: false
|
66
64
|
requirements:
|
67
|
-
- -
|
65
|
+
- - ">="
|
68
66
|
- !ruby/object:Gem::Version
|
69
67
|
version: '0'
|
70
68
|
type: :development
|
71
69
|
prerelease: false
|
72
70
|
version_requirements: !ruby/object:Gem::Requirement
|
73
|
-
none: false
|
74
71
|
requirements:
|
75
|
-
- -
|
72
|
+
- - ">="
|
76
73
|
- !ruby/object:Gem::Version
|
77
74
|
version: '0'
|
78
75
|
- !ruby/object:Gem::Dependency
|
79
|
-
name:
|
76
|
+
name: bundler
|
80
77
|
requirement: !ruby/object:Gem::Requirement
|
81
|
-
none: false
|
82
78
|
requirements:
|
83
|
-
- -
|
79
|
+
- - ">="
|
84
80
|
- !ruby/object:Gem::Version
|
85
81
|
version: '0'
|
86
82
|
type: :development
|
87
83
|
prerelease: false
|
88
84
|
version_requirements: !ruby/object:Gem::Requirement
|
89
|
-
none: false
|
90
85
|
requirements:
|
91
|
-
- -
|
86
|
+
- - ">="
|
92
87
|
- !ruby/object:Gem::Version
|
93
88
|
version: '0'
|
94
89
|
- !ruby/object:Gem::Dependency
|
95
|
-
name:
|
90
|
+
name: shoulda
|
96
91
|
requirement: !ruby/object:Gem::Requirement
|
97
|
-
none: false
|
98
92
|
requirements:
|
99
|
-
- -
|
93
|
+
- - ">="
|
100
94
|
- !ruby/object:Gem::Version
|
101
95
|
version: '0'
|
102
96
|
type: :development
|
103
97
|
prerelease: false
|
104
98
|
version_requirements: !ruby/object:Gem::Requirement
|
105
|
-
none: false
|
106
99
|
requirements:
|
107
|
-
- -
|
100
|
+
- - ">="
|
108
101
|
- !ruby/object:Gem::Version
|
109
102
|
version: '0'
|
110
103
|
- !ruby/object:Gem::Dependency
|
111
|
-
name:
|
104
|
+
name: mocha
|
112
105
|
requirement: !ruby/object:Gem::Requirement
|
113
|
-
none: false
|
114
106
|
requirements:
|
115
|
-
- -
|
107
|
+
- - ">="
|
116
108
|
- !ruby/object:Gem::Version
|
117
109
|
version: '0'
|
118
110
|
type: :development
|
119
111
|
prerelease: false
|
120
112
|
version_requirements: !ruby/object:Gem::Requirement
|
121
|
-
none: false
|
122
113
|
requirements:
|
123
|
-
- -
|
114
|
+
- - ">="
|
124
115
|
- !ruby/object:Gem::Version
|
125
116
|
version: '0'
|
126
117
|
- !ruby/object:Gem::Dependency
|
127
|
-
name:
|
118
|
+
name: test-unit
|
128
119
|
requirement: !ruby/object:Gem::Requirement
|
129
|
-
none: false
|
130
120
|
requirements:
|
131
|
-
- -
|
121
|
+
- - ">="
|
132
122
|
- !ruby/object:Gem::Version
|
133
123
|
version: '0'
|
134
124
|
type: :development
|
135
125
|
prerelease: false
|
136
126
|
version_requirements: !ruby/object:Gem::Requirement
|
137
|
-
none: false
|
138
127
|
requirements:
|
139
|
-
- -
|
128
|
+
- - ">="
|
140
129
|
- !ruby/object:Gem::Version
|
141
130
|
version: '0'
|
142
131
|
- !ruby/object:Gem::Dependency
|
143
|
-
name:
|
132
|
+
name: bump
|
144
133
|
requirement: !ruby/object:Gem::Requirement
|
145
|
-
none: false
|
146
134
|
requirements:
|
147
|
-
- -
|
135
|
+
- - ">="
|
148
136
|
- !ruby/object:Gem::Version
|
149
137
|
version: '0'
|
150
138
|
type: :development
|
151
139
|
prerelease: false
|
152
140
|
version_requirements: !ruby/object:Gem::Requirement
|
153
|
-
none: false
|
154
141
|
requirements:
|
155
|
-
- -
|
142
|
+
- - ">="
|
156
143
|
- !ruby/object:Gem::Version
|
157
144
|
version: '0'
|
145
|
+
- !ruby/object:Gem::Dependency
|
146
|
+
name: wwtd
|
147
|
+
requirement: !ruby/object:Gem::Requirement
|
148
|
+
requirements:
|
149
|
+
- - ">="
|
150
|
+
- !ruby/object:Gem::Version
|
151
|
+
version: 0.5.3
|
152
|
+
type: :development
|
153
|
+
prerelease: false
|
154
|
+
version_requirements: !ruby/object:Gem::Requirement
|
155
|
+
requirements:
|
156
|
+
- - ">="
|
157
|
+
- !ruby/object:Gem::Version
|
158
|
+
version: 0.5.3
|
158
159
|
description: GUIDs for sharded models
|
159
160
|
email: ben@zendesk.com
|
160
161
|
executables: []
|
@@ -165,30 +166,30 @@ files:
|
|
165
166
|
- lib/global_uid/active_record_extension.rb
|
166
167
|
- lib/global_uid/base.rb
|
167
168
|
- lib/global_uid/migration_extension.rb
|
169
|
+
- lib/global_uid/schema_dumper_extension.rb
|
168
170
|
- lib/global_uid/server_variables.rb
|
169
171
|
homepage: https://github.com/zendesk/global_uid
|
170
172
|
licenses:
|
171
173
|
- MIT
|
174
|
+
metadata: {}
|
172
175
|
post_install_message:
|
173
176
|
rdoc_options: []
|
174
177
|
require_paths:
|
175
178
|
- lib
|
176
179
|
required_ruby_version: !ruby/object:Gem::Requirement
|
177
|
-
none: false
|
178
180
|
requirements:
|
179
|
-
- -
|
181
|
+
- - ">="
|
180
182
|
- !ruby/object:Gem::Version
|
181
183
|
version: '0'
|
182
184
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
183
|
-
none: false
|
184
185
|
requirements:
|
185
|
-
- -
|
186
|
+
- - ">="
|
186
187
|
- !ruby/object:Gem::Version
|
187
188
|
version: '0'
|
188
189
|
requirements: []
|
189
190
|
rubyforge_project:
|
190
|
-
rubygems_version:
|
191
|
+
rubygems_version: 2.2.2
|
191
192
|
signing_key:
|
192
|
-
specification_version:
|
193
|
+
specification_version: 4
|
193
194
|
summary: GUID
|
194
195
|
test_files: []
|