switchman 2.0.1 → 2.0.7
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 +4 -4
- data/app/models/switchman/shard.rb +2 -0
- data/db/migrate/20130328212039_create_switchman_shards.rb +2 -0
- data/db/migrate/20130328224244_create_default_shard.rb +2 -0
- data/db/migrate/20161206323434_add_back_default_string_limits_switchman.rb +2 -0
- data/db/migrate/20180828183945_add_default_shard_index.rb +2 -0
- data/db/migrate/20180828192111_add_timestamps_to_shards.rb +2 -0
- data/db/migrate/20190114212900_add_unique_name_indexes.rb +2 -0
- data/lib/switchman.rb +2 -0
- data/lib/switchman/action_controller/caching.rb +2 -0
- data/lib/switchman/active_record/abstract_adapter.rb +6 -0
- data/lib/switchman/active_record/association.rb +10 -4
- data/lib/switchman/active_record/attribute_methods.rb +2 -0
- data/lib/switchman/active_record/base.rb +2 -0
- data/lib/switchman/active_record/batches.rb +2 -0
- data/lib/switchman/active_record/calculations.rb +2 -0
- data/lib/switchman/active_record/connection_handler.rb +2 -0
- data/lib/switchman/active_record/connection_pool.rb +2 -0
- data/lib/switchman/active_record/finder_methods.rb +2 -0
- data/lib/switchman/active_record/log_subscriber.rb +2 -0
- data/lib/switchman/active_record/migration.rb +3 -1
- data/lib/switchman/active_record/model_schema.rb +2 -0
- data/lib/switchman/active_record/persistence.rb +2 -0
- data/lib/switchman/active_record/postgresql_adapter.rb +2 -0
- data/lib/switchman/active_record/predicate_builder.rb +2 -0
- data/lib/switchman/active_record/query_cache.rb +2 -0
- data/lib/switchman/active_record/query_methods.rb +2 -0
- data/lib/switchman/active_record/reflection.rb +2 -0
- data/lib/switchman/active_record/relation.rb +2 -0
- data/lib/switchman/active_record/spawn_methods.rb +2 -0
- data/lib/switchman/active_record/statement_cache.rb +2 -0
- data/lib/switchman/active_record/table_definition.rb +2 -0
- data/lib/switchman/active_record/type_caster.rb +2 -0
- data/lib/switchman/active_record/where_clause_factory.rb +2 -0
- data/lib/switchman/active_support/cache.rb +2 -0
- data/lib/switchman/arel.rb +2 -0
- data/lib/switchman/call_super.rb +2 -0
- data/lib/switchman/connection_pool_proxy.rb +2 -0
- data/lib/switchman/database_server.rb +2 -0
- data/lib/switchman/default_shard.rb +2 -0
- data/lib/switchman/engine.rb +2 -0
- data/lib/switchman/environment.rb +2 -0
- data/lib/switchman/errors.rb +2 -0
- data/lib/switchman/guard_rail.rb +2 -0
- data/lib/switchman/guard_rail/relation.rb +2 -0
- data/lib/switchman/open4.rb +2 -0
- data/lib/switchman/r_spec_helper.rb +2 -0
- data/lib/switchman/rails.rb +2 -0
- data/lib/switchman/schema_cache.rb +2 -0
- data/lib/switchman/sharded_instrumenter.rb +2 -0
- data/lib/switchman/standard_error.rb +3 -1
- data/lib/switchman/test_helper.rb +2 -0
- data/lib/switchman/version.rb +3 -1
- metadata +24 -10
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 6aef8a22c98bb6cbd26aae19a97bc4357e5f2d18cbaecdf039dbe703be6ecf6c
|
4
|
+
data.tar.gz: 4a93fc1575776b9f39d8ab62d105f269616c1648eda8978823fd030c69e6d747
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d3706346b156d9653491b32564fa83ac81c35d9520917de29d0e6681784d01875722c39bd8cbdd204c816b9795940fbee8acb8b29416a48c965868c57711fa7d
|
7
|
+
data.tar.gz: 0f92f8e61c8a543202b4f34df3e05d86091c4c6b29e04cc28bafbc3c154978fcdf7b1bc868ea73add5a1f9c38b7671575f1284242916335ad90d98f279e51dee
|
data/lib/switchman.rb
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'switchman/sharded_instrumenter'
|
2
4
|
|
3
5
|
module Switchman
|
@@ -27,6 +29,10 @@ module Switchman
|
|
27
29
|
quote_table_name(name)
|
28
30
|
end
|
29
31
|
|
32
|
+
def schema_migration
|
33
|
+
::ActiveRecord::SchemaMigration
|
34
|
+
end
|
35
|
+
|
30
36
|
protected
|
31
37
|
|
32
38
|
def log(*args, &block)
|
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
module Switchman
|
2
4
|
module ActiveRecord
|
3
5
|
module Association
|
@@ -75,7 +77,7 @@ module Switchman
|
|
75
77
|
module Association
|
76
78
|
if ::Rails.version >= "5.2" and ::Rails.version < "6.0"
|
77
79
|
def run(preloader)
|
78
|
-
associated_records_by_owner
|
80
|
+
associated_records_by_owner.each do |owner, records|
|
79
81
|
associate_records_to_owner(owner, records)
|
80
82
|
end
|
81
83
|
end
|
@@ -102,6 +104,7 @@ module Switchman
|
|
102
104
|
end
|
103
105
|
|
104
106
|
def associated_records_by_owner(preloader = nil)
|
107
|
+
return @associated_records_by_owner if defined?(@associated_records_by_owner)
|
105
108
|
owners_map = owners_by_key
|
106
109
|
|
107
110
|
if klass.nil? || owners_map.empty?
|
@@ -149,10 +152,13 @@ module Switchman
|
|
149
152
|
records.flatten!
|
150
153
|
end
|
151
154
|
|
155
|
+
# This ivar may look unused, but remember this is an extension of
|
156
|
+
# rails' AR::Associations::Preloader::Association class. It gets used
|
157
|
+
# by that class (and its subclasses).
|
152
158
|
@preloaded_records = records
|
153
159
|
|
154
160
|
# Each record may have multiple owners, and vice-versa
|
155
|
-
|
161
|
+
@associated_records_by_owner = owners.each_with_object({}) do |owner,h|
|
156
162
|
h[owner] = []
|
157
163
|
end
|
158
164
|
records.each do |record|
|
@@ -161,10 +167,10 @@ module Switchman
|
|
161
167
|
|
162
168
|
owners_map[owner_key.to_s].each do |owner|
|
163
169
|
owner.association(reflection.name).set_inverse_instance(record)
|
164
|
-
|
170
|
+
@associated_records_by_owner[owner] << record
|
165
171
|
end
|
166
172
|
end
|
167
|
-
|
173
|
+
@associated_records_by_owner
|
168
174
|
end
|
169
175
|
|
170
176
|
def owners_by_key
|
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
module Switchman
|
2
4
|
module ActiveRecord
|
3
5
|
module Migration
|
@@ -29,7 +31,7 @@ module Switchman
|
|
29
31
|
|
30
32
|
module Migrator
|
31
33
|
def generate_migrator_advisory_lock_id
|
32
|
-
shard_name_hash = Zlib.crc32(Shard.current.name)
|
34
|
+
shard_name_hash = Zlib.crc32("#{Shard.current.id}:#{Shard.current.name}")
|
33
35
|
::ActiveRecord::Migrator::MIGRATOR_SALT * shard_name_hash
|
34
36
|
end
|
35
37
|
end
|
data/lib/switchman/arel.rb
CHANGED
data/lib/switchman/call_super.rb
CHANGED
data/lib/switchman/engine.rb
CHANGED
data/lib/switchman/errors.rb
CHANGED
data/lib/switchman/guard_rail.rb
CHANGED
data/lib/switchman/open4.rb
CHANGED
data/lib/switchman/rails.rb
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
module Switchman
|
2
4
|
module StandardError
|
3
5
|
def initialize(*args)
|
@@ -6,7 +8,7 @@ module Switchman
|
|
6
8
|
end
|
7
9
|
|
8
10
|
def current_shard(category = :primary)
|
9
|
-
@active_shards[category
|
11
|
+
@active_shards&.[](category) || Shard.default
|
10
12
|
end
|
11
13
|
end
|
12
14
|
end
|
data/lib/switchman/version.rb
CHANGED
metadata
CHANGED
@@ -1,16 +1,16 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: switchman
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.0.
|
4
|
+
version: 2.0.7
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Cody Cutrer
|
8
8
|
- James Williams
|
9
9
|
- Jacob Fugal
|
10
|
-
autorequire:
|
10
|
+
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date:
|
13
|
+
date: 2021-03-05 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: railties
|
@@ -140,16 +140,30 @@ dependencies:
|
|
140
140
|
name: rspec-rails
|
141
141
|
requirement: !ruby/object:Gem::Requirement
|
142
142
|
requirements:
|
143
|
-
- -
|
143
|
+
- - "~>"
|
144
144
|
- !ruby/object:Gem::Version
|
145
|
-
version: 3.5
|
145
|
+
version: '3.5'
|
146
146
|
type: :development
|
147
147
|
prerelease: false
|
148
148
|
version_requirements: !ruby/object:Gem::Requirement
|
149
149
|
requirements:
|
150
|
-
- -
|
150
|
+
- - "~>"
|
151
|
+
- !ruby/object:Gem::Version
|
152
|
+
version: '3.5'
|
153
|
+
- !ruby/object:Gem::Dependency
|
154
|
+
name: rspec-mocks
|
155
|
+
requirement: !ruby/object:Gem::Requirement
|
156
|
+
requirements:
|
157
|
+
- - "~>"
|
158
|
+
- !ruby/object:Gem::Version
|
159
|
+
version: '3.5'
|
160
|
+
type: :development
|
161
|
+
prerelease: false
|
162
|
+
version_requirements: !ruby/object:Gem::Requirement
|
163
|
+
requirements:
|
164
|
+
- - "~>"
|
151
165
|
- !ruby/object:Gem::Version
|
152
|
-
version: 3.5
|
166
|
+
version: '3.5'
|
153
167
|
- !ruby/object:Gem::Dependency
|
154
168
|
name: simplecov
|
155
169
|
requirement: !ruby/object:Gem::Requirement
|
@@ -243,7 +257,7 @@ homepage: http://www.instructure.com/
|
|
243
257
|
licenses:
|
244
258
|
- MIT
|
245
259
|
metadata: {}
|
246
|
-
post_install_message:
|
260
|
+
post_install_message:
|
247
261
|
rdoc_options: []
|
248
262
|
require_paths:
|
249
263
|
- lib
|
@@ -258,8 +272,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
258
272
|
- !ruby/object:Gem::Version
|
259
273
|
version: '0'
|
260
274
|
requirements: []
|
261
|
-
rubygems_version: 3.
|
262
|
-
signing_key:
|
275
|
+
rubygems_version: 3.0.3
|
276
|
+
signing_key:
|
263
277
|
specification_version: 4
|
264
278
|
summary: Rails sharding magic
|
265
279
|
test_files: []
|