active_record_shards 3.11.2 → 3.19.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 +5 -5
- data/README.md +120 -57
- data/lib/active_record_shards/association_collection_connection_selection.rb +23 -16
- data/lib/active_record_shards/configuration_parser.rb +19 -5
- data/lib/active_record_shards/connection_handler.rb +3 -8
- data/lib/active_record_shards/connection_pool.rb +1 -0
- data/lib/active_record_shards/connection_specification.rb +7 -16
- data/lib/active_record_shards/connection_switcher-4-2.rb +56 -0
- data/lib/active_record_shards/connection_switcher-5-0.rb +1 -1
- data/lib/active_record_shards/connection_switcher-5-1.rb +1 -1
- data/lib/active_record_shards/connection_switcher.rb +74 -57
- data/lib/active_record_shards/default_replica_patches.rb +278 -0
- data/lib/active_record_shards/default_slave_patches.rb +3 -148
- data/lib/active_record_shards/deprecation.rb +12 -0
- data/lib/active_record_shards/migration.rb +35 -31
- data/lib/active_record_shards/model.rb +17 -12
- data/lib/active_record_shards/patches-4-2.rb +1 -5
- data/lib/active_record_shards/schema_dumper_extension.rb +6 -5
- data/lib/active_record_shards/shard_selection.rb +28 -26
- data/lib/active_record_shards/shard_support.rb +1 -0
- data/lib/active_record_shards/sql_comments.rb +11 -4
- data/lib/active_record_shards/tasks.rb +40 -35
- data/lib/active_record_shards.rb +111 -7
- metadata +61 -58
- data/lib/active_record_shards/connection_switcher-4-0.rb +0 -68
- data/lib/active_record_shards/patches-3-2.rb +0 -11
- data/lib/active_record_shards/patches-5-0.rb +0 -15
metadata
CHANGED
@@ -1,16 +1,19 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: active_record_shards
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 3.
|
4
|
+
version: 3.19.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
|
+
- Benjamin Quorning
|
8
|
+
- Gabe Martin-Dempesy
|
9
|
+
- Pierre Schambacher
|
7
10
|
- Mick Staugaard
|
8
11
|
- Eric Chapweske
|
9
12
|
- Ben Osheroff
|
10
|
-
autorequire:
|
13
|
+
autorequire:
|
11
14
|
bindir: bin
|
12
15
|
cert_chain: []
|
13
|
-
date:
|
16
|
+
date: 2021-07-09 00:00:00.000000000 Z
|
14
17
|
dependencies:
|
15
18
|
- !ruby/object:Gem::Dependency
|
16
19
|
name: activerecord
|
@@ -18,42 +21,42 @@ dependencies:
|
|
18
21
|
requirements:
|
19
22
|
- - ">="
|
20
23
|
- !ruby/object:Gem::Version
|
21
|
-
version:
|
24
|
+
version: '4.2'
|
22
25
|
- - "<"
|
23
26
|
- !ruby/object:Gem::Version
|
24
|
-
version: '
|
27
|
+
version: '6.1'
|
25
28
|
type: :runtime
|
26
29
|
prerelease: false
|
27
30
|
version_requirements: !ruby/object:Gem::Requirement
|
28
31
|
requirements:
|
29
32
|
- - ">="
|
30
33
|
- !ruby/object:Gem::Version
|
31
|
-
version:
|
34
|
+
version: '4.2'
|
32
35
|
- - "<"
|
33
36
|
- !ruby/object:Gem::Version
|
34
|
-
version: '
|
37
|
+
version: '6.1'
|
35
38
|
- !ruby/object:Gem::Dependency
|
36
39
|
name: activesupport
|
37
40
|
requirement: !ruby/object:Gem::Requirement
|
38
41
|
requirements:
|
39
42
|
- - ">="
|
40
43
|
- !ruby/object:Gem::Version
|
41
|
-
version:
|
44
|
+
version: '4.2'
|
42
45
|
- - "<"
|
43
46
|
- !ruby/object:Gem::Version
|
44
|
-
version: '
|
47
|
+
version: '6.1'
|
45
48
|
type: :runtime
|
46
49
|
prerelease: false
|
47
50
|
version_requirements: !ruby/object:Gem::Requirement
|
48
51
|
requirements:
|
49
52
|
- - ">="
|
50
53
|
- !ruby/object:Gem::Version
|
51
|
-
version:
|
54
|
+
version: '4.2'
|
52
55
|
- - "<"
|
53
56
|
- !ruby/object:Gem::Version
|
54
|
-
version: '
|
57
|
+
version: '6.1'
|
55
58
|
- !ruby/object:Gem::Dependency
|
56
|
-
name:
|
59
|
+
name: bump
|
57
60
|
requirement: !ruby/object:Gem::Requirement
|
58
61
|
requirements:
|
59
62
|
- - ">="
|
@@ -67,21 +70,21 @@ dependencies:
|
|
67
70
|
- !ruby/object:Gem::Version
|
68
71
|
version: '0'
|
69
72
|
- !ruby/object:Gem::Dependency
|
70
|
-
name:
|
73
|
+
name: minitest
|
71
74
|
requirement: !ruby/object:Gem::Requirement
|
72
75
|
requirements:
|
73
|
-
- - "
|
76
|
+
- - ">="
|
74
77
|
- !ruby/object:Gem::Version
|
75
|
-
version:
|
78
|
+
version: 5.10.0
|
76
79
|
type: :development
|
77
80
|
prerelease: false
|
78
81
|
version_requirements: !ruby/object:Gem::Requirement
|
79
82
|
requirements:
|
80
|
-
- - "
|
83
|
+
- - ">="
|
81
84
|
- !ruby/object:Gem::Version
|
82
|
-
version:
|
85
|
+
version: 5.10.0
|
83
86
|
- !ruby/object:Gem::Dependency
|
84
|
-
name:
|
87
|
+
name: minitest-rg
|
85
88
|
requirement: !ruby/object:Gem::Requirement
|
86
89
|
requirements:
|
87
90
|
- - ">="
|
@@ -95,94 +98,95 @@ dependencies:
|
|
95
98
|
- !ruby/object:Gem::Version
|
96
99
|
version: '0'
|
97
100
|
- !ruby/object:Gem::Dependency
|
98
|
-
name:
|
101
|
+
name: mocha
|
99
102
|
requirement: !ruby/object:Gem::Requirement
|
100
103
|
requirements:
|
101
104
|
- - ">="
|
102
105
|
- !ruby/object:Gem::Version
|
103
|
-
version:
|
106
|
+
version: 1.4.0
|
104
107
|
type: :development
|
105
108
|
prerelease: false
|
106
109
|
version_requirements: !ruby/object:Gem::Requirement
|
107
110
|
requirements:
|
108
111
|
- - ">="
|
109
112
|
- !ruby/object:Gem::Version
|
110
|
-
version:
|
113
|
+
version: 1.4.0
|
111
114
|
- !ruby/object:Gem::Dependency
|
112
|
-
name:
|
115
|
+
name: mysql2
|
113
116
|
requirement: !ruby/object:Gem::Requirement
|
114
117
|
requirements:
|
115
|
-
- -
|
118
|
+
- - ">="
|
116
119
|
- !ruby/object:Gem::Version
|
117
|
-
version: 0
|
120
|
+
version: '0'
|
118
121
|
type: :development
|
119
122
|
prerelease: false
|
120
123
|
version_requirements: !ruby/object:Gem::Requirement
|
121
124
|
requirements:
|
122
|
-
- -
|
125
|
+
- - ">="
|
123
126
|
- !ruby/object:Gem::Version
|
124
|
-
version: 0
|
127
|
+
version: '0'
|
125
128
|
- !ruby/object:Gem::Dependency
|
126
|
-
name:
|
129
|
+
name: rake
|
127
130
|
requirement: !ruby/object:Gem::Requirement
|
128
131
|
requirements:
|
129
|
-
- - "
|
132
|
+
- - "~>"
|
130
133
|
- !ruby/object:Gem::Version
|
131
|
-
version: '0'
|
134
|
+
version: '12.0'
|
132
135
|
type: :development
|
133
136
|
prerelease: false
|
134
137
|
version_requirements: !ruby/object:Gem::Requirement
|
135
138
|
requirements:
|
136
|
-
- - "
|
139
|
+
- - "~>"
|
137
140
|
- !ruby/object:Gem::Version
|
138
|
-
version: '0'
|
141
|
+
version: '12.0'
|
139
142
|
- !ruby/object:Gem::Dependency
|
140
|
-
name:
|
143
|
+
name: rubocop
|
141
144
|
requirement: !ruby/object:Gem::Requirement
|
142
145
|
requirements:
|
143
|
-
- - "
|
146
|
+
- - "~>"
|
144
147
|
- !ruby/object:Gem::Version
|
145
|
-
version:
|
148
|
+
version: 0.77.0
|
146
149
|
type: :development
|
147
150
|
prerelease: false
|
148
151
|
version_requirements: !ruby/object:Gem::Requirement
|
149
152
|
requirements:
|
150
|
-
- - "
|
153
|
+
- - "~>"
|
151
154
|
- !ruby/object:Gem::Version
|
152
|
-
version:
|
155
|
+
version: 0.77.0
|
153
156
|
- !ruby/object:Gem::Dependency
|
154
|
-
name:
|
157
|
+
name: rubocop-minitest
|
155
158
|
requirement: !ruby/object:Gem::Requirement
|
156
159
|
requirements:
|
157
|
-
- - "
|
160
|
+
- - "~>"
|
158
161
|
- !ruby/object:Gem::Version
|
159
|
-
version:
|
162
|
+
version: 0.5.0
|
160
163
|
type: :development
|
161
164
|
prerelease: false
|
162
165
|
version_requirements: !ruby/object:Gem::Requirement
|
163
166
|
requirements:
|
164
|
-
- - "
|
167
|
+
- - "~>"
|
165
168
|
- !ruby/object:Gem::Version
|
166
|
-
version:
|
169
|
+
version: 0.5.0
|
167
170
|
- !ruby/object:Gem::Dependency
|
168
|
-
name:
|
171
|
+
name: rubocop-performance
|
169
172
|
requirement: !ruby/object:Gem::Requirement
|
170
173
|
requirements:
|
171
|
-
- - "
|
174
|
+
- - "~>"
|
172
175
|
- !ruby/object:Gem::Version
|
173
|
-
version:
|
176
|
+
version: 1.5.1
|
174
177
|
type: :development
|
175
178
|
prerelease: false
|
176
179
|
version_requirements: !ruby/object:Gem::Requirement
|
177
180
|
requirements:
|
178
|
-
- - "
|
181
|
+
- - "~>"
|
179
182
|
- !ruby/object:Gem::Version
|
180
|
-
version:
|
181
|
-
description: Easily run queries on shard and
|
183
|
+
version: 1.5.1
|
184
|
+
description: Easily run queries on shard and replica databases.
|
182
185
|
email:
|
186
|
+
- bquorning@zendesk.com
|
187
|
+
- gabe@zendesk.com
|
188
|
+
- pschambacher@zendesk.com
|
183
189
|
- mick@staugaard.com
|
184
|
-
- eac@zendesk.com
|
185
|
-
- ben@gimbo.net
|
186
190
|
executables: []
|
187
191
|
extensions: []
|
188
192
|
extra_rdoc_files: []
|
@@ -194,16 +198,16 @@ files:
|
|
194
198
|
- lib/active_record_shards/connection_handler.rb
|
195
199
|
- lib/active_record_shards/connection_pool.rb
|
196
200
|
- lib/active_record_shards/connection_specification.rb
|
197
|
-
- lib/active_record_shards/connection_switcher-4-
|
201
|
+
- lib/active_record_shards/connection_switcher-4-2.rb
|
198
202
|
- lib/active_record_shards/connection_switcher-5-0.rb
|
199
203
|
- lib/active_record_shards/connection_switcher-5-1.rb
|
200
204
|
- lib/active_record_shards/connection_switcher.rb
|
205
|
+
- lib/active_record_shards/default_replica_patches.rb
|
201
206
|
- lib/active_record_shards/default_slave_patches.rb
|
207
|
+
- lib/active_record_shards/deprecation.rb
|
202
208
|
- lib/active_record_shards/migration.rb
|
203
209
|
- lib/active_record_shards/model.rb
|
204
|
-
- lib/active_record_shards/patches-3-2.rb
|
205
210
|
- lib/active_record_shards/patches-4-2.rb
|
206
|
-
- lib/active_record_shards/patches-5-0.rb
|
207
211
|
- lib/active_record_shards/schema_dumper_extension.rb
|
208
212
|
- lib/active_record_shards/shard_selection.rb
|
209
213
|
- lib/active_record_shards/shard_support.rb
|
@@ -213,24 +217,23 @@ homepage: https://github.com/zendesk/active_record_shards
|
|
213
217
|
licenses:
|
214
218
|
- MIT
|
215
219
|
metadata: {}
|
216
|
-
post_install_message:
|
220
|
+
post_install_message:
|
217
221
|
rdoc_options: []
|
218
222
|
require_paths:
|
219
223
|
- lib
|
220
224
|
required_ruby_version: !ruby/object:Gem::Requirement
|
221
225
|
requirements:
|
222
|
-
- - "
|
226
|
+
- - ">="
|
223
227
|
- !ruby/object:Gem::Version
|
224
|
-
version: '2.
|
228
|
+
version: '2.3'
|
225
229
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
226
230
|
requirements:
|
227
231
|
- - ">="
|
228
232
|
- !ruby/object:Gem::Version
|
229
233
|
version: '0'
|
230
234
|
requirements: []
|
231
|
-
|
232
|
-
|
233
|
-
signing_key:
|
235
|
+
rubygems_version: 3.2.16
|
236
|
+
signing_key:
|
234
237
|
specification_version: 4
|
235
238
|
summary: Simple database switching for ActiveRecord.
|
236
239
|
test_files: []
|
@@ -1,68 +0,0 @@
|
|
1
|
-
module ActiveRecordShards
|
2
|
-
module ConnectionSwitcher
|
3
|
-
# Name of the connection pool. Used by ConnectionHandler to retrieve the current connection pool.
|
4
|
-
def connection_pool_name # :nodoc:
|
5
|
-
name = current_shard_selection.shard_name(self)
|
6
|
-
|
7
|
-
if configurations[name].nil? && on_slave?
|
8
|
-
current_shard_selection.shard_name(self, false)
|
9
|
-
else
|
10
|
-
name
|
11
|
-
end
|
12
|
-
end
|
13
|
-
|
14
|
-
private
|
15
|
-
|
16
|
-
def ensure_shard_connection
|
17
|
-
establish_shard_connection unless connected_to_shard?
|
18
|
-
end
|
19
|
-
|
20
|
-
def establish_shard_connection
|
21
|
-
name = connection_pool_name
|
22
|
-
spec = configurations[name]
|
23
|
-
|
24
|
-
if spec.nil?
|
25
|
-
raise ActiveRecord::AdapterNotSpecified, "No database defined by #{name} in database.yml"
|
26
|
-
end
|
27
|
-
|
28
|
-
# in 3.2 rails is asking for a connection pool in a map of these ConnectionSpecifications. If we want to re-use connections,
|
29
|
-
# we need to re-use specs.
|
30
|
-
|
31
|
-
# note that since we're subverting the standard establish_connection path, we have to handle the funky autoloading of the
|
32
|
-
# connection adapter ourselves.
|
33
|
-
if ActiveRecord::VERSION::MAJOR >= 4
|
34
|
-
specification_cache[name] ||= begin
|
35
|
-
resolver = ActiveRecordShards::ConnectionSpecification::Resolver.new configurations
|
36
|
-
resolver.spec(spec)
|
37
|
-
end
|
38
|
-
|
39
|
-
connection_handler.establish_connection(self, specification_cache[name])
|
40
|
-
else
|
41
|
-
specification_cache[name] ||= begin
|
42
|
-
resolver = ActiveRecordShards::ConnectionSpecification::Resolver.new spec, configurations
|
43
|
-
resolver.spec
|
44
|
-
end
|
45
|
-
|
46
|
-
connection_handler.establish_connection(connection_pool_name, specification_cache[name])
|
47
|
-
end
|
48
|
-
end
|
49
|
-
|
50
|
-
def specification_cache
|
51
|
-
@@specification_cache ||= {}
|
52
|
-
end
|
53
|
-
|
54
|
-
def connection_pool_key
|
55
|
-
specification_cache[connection_pool_name]
|
56
|
-
end
|
57
|
-
|
58
|
-
def connected_to_shard?
|
59
|
-
if ActiveRecord::VERSION::MAJOR >= 4
|
60
|
-
specs_to_pools = Hash[connection_handler.connection_pool_list.map { |pool| [pool.spec, pool] }]
|
61
|
-
else
|
62
|
-
specs_to_pools = connection_handler.connection_pools
|
63
|
-
end
|
64
|
-
|
65
|
-
specs_to_pools.key?(connection_pool_key)
|
66
|
-
end
|
67
|
-
end
|
68
|
-
end
|
@@ -1,11 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
require 'active_record_shards/connection_pool'
|
3
|
-
require 'active_record_shards/connection_handler'
|
4
|
-
require 'active_record_shards/connection_specification'
|
5
|
-
|
6
|
-
|
7
|
-
ActiveRecordShards::ConnectionSpecification = ActiveRecord::Base::ConnectionSpecification
|
8
|
-
methods_to_override = [:remove_connection]
|
9
|
-
ActiveRecordShards.override_connection_handler_methods(methods_to_override)
|
10
|
-
|
11
|
-
ActiveRecord::Associations::Preloader::HasAndBelongsToMany.include(ActiveRecordShards::DefaultSlavePatches::HasAndBelongsToManyPreloaderPatches)
|
@@ -1,15 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
require 'active_record_shards/schema_dumper_extension'
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
ActiveRecord::Associations::Builder::HasAndBelongsToMany.include(ActiveRecordShards::DefaultSlavePatches::Rails41HasAndBelongsToManyBuilderExtension)
|
12
|
-
|
13
|
-
ActiveRecord::SchemaDumper.prepend(ActiveRecordShards::SchemaDumperExtension)
|
14
|
-
|
15
|
-
ActiveRecord::InternalMetadata.not_sharded
|