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.
@@ -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
@@ -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
@@ -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 = global_uid_options[:storage_engine] ? "ENGINE=#{global_uid_options[:storage_engine]}" : ""
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
@@ -38,6 +38,5 @@ module GlobalUid
38
38
  end
39
39
  drop_table_without_global_uid(name)
40
40
  end
41
-
42
41
  end
43
42
  end
@@ -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: 1.4.1
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-03 00:00:00.000000000 Z
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: '0'
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: '0'
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: mysql
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: 2.8.1
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: 2.8.1
60
+ version: '0'
62
61
  - !ruby/object:Gem::Dependency
63
- name: appraisal
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: rake
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: bundler
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: shoulda
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: mocha
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: test-unit
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: 1.8.23.2
191
+ rubygems_version: 2.2.2
191
192
  signing_key:
192
- specification_version: 3
193
+ specification_version: 4
193
194
  summary: GUID
194
195
  test_files: []