global_uid 1.4.1 → 2.0.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -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: []