switchman 3.3.2 → 3.3.4
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
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 9dfbc3eb712e4dabeaf71e1772014d3fcc50f439d7266c03943050e4054791f2
|
4
|
+
data.tar.gz: 902b59d7077cab4e9c583b55e5f1c3e4df6565e678b806f7df4515033031ea65
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: cba1cdfe3b5297443fe62064db702a3164fab8939497196e2c325e3a28fb6c4d1bbbd64698dd7c861c7f60b32eb5d91d6c1273ec4f8d3eafe45f675f5fcc36b1
|
7
|
+
data.tar.gz: b66c46f377262622339d18bd5167c6fca048b02e8167f9636aefae642afca1987ec51c71ed68a4fb3177fd0176c589b4f587c3336cc863f4b3478ed25503af53
|
@@ -273,10 +273,11 @@ module Switchman
|
|
273
273
|
end
|
274
274
|
|
275
275
|
module AutosaveAssociation
|
276
|
-
def
|
277
|
-
|
278
|
-
|
279
|
-
|
276
|
+
def association_foreign_key_changed?(reflection, record, key)
|
277
|
+
return false if reflection.through_reflection?
|
278
|
+
|
279
|
+
# have to use send instead of _read_attribute because sharding
|
280
|
+
record.has_attribute?(reflection.foreign_key) && record.send(reflection.foreign_key) != key
|
280
281
|
end
|
281
282
|
|
282
283
|
def save_belongs_to_association(reflection)
|
@@ -3,6 +3,21 @@
|
|
3
3
|
module Switchman
|
4
4
|
module ActiveRecord
|
5
5
|
module ConnectionPool
|
6
|
+
def get_schema_cache(connection)
|
7
|
+
self.schema_cache ||= SharedSchemaCache.get_schema_cache(connection)
|
8
|
+
self.schema_cache.connection = connection
|
9
|
+
|
10
|
+
self.schema_cache
|
11
|
+
end
|
12
|
+
|
13
|
+
# rubocop:disable Naming/AccessorMethodName override method
|
14
|
+
def set_schema_cache(cache)
|
15
|
+
cache.instance_variables.each do |x|
|
16
|
+
self.schema_cache.instance_variable_set(x, cache.instance_variable_get(x))
|
17
|
+
end
|
18
|
+
end
|
19
|
+
# rubocop:enable Naming/AccessorMethodName override method
|
20
|
+
|
6
21
|
def default_schema
|
7
22
|
connection unless @schemas
|
8
23
|
# default shard will not switch databases immediately, so it won't be set yet
|
@@ -0,0 +1,11 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Switchman
|
4
|
+
class SharedSchemaCache
|
5
|
+
def self.get_schema_cache(connection)
|
6
|
+
@schema_cache ||= ::ActiveRecord::ConnectionAdapters::SchemaCache.new(connection)
|
7
|
+
@schema_cache.connection = connection
|
8
|
+
@schema_cache
|
9
|
+
end
|
10
|
+
end
|
11
|
+
end
|
data/lib/switchman/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: switchman
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 3.3.
|
4
|
+
version: 3.3.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Cody Cutrer
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2023-
|
13
|
+
date: 2023-03-21 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: activerecord
|
@@ -290,6 +290,7 @@ files:
|
|
290
290
|
- lib/switchman/rails.rb
|
291
291
|
- lib/switchman/shard.rb
|
292
292
|
- lib/switchman/sharded_instrumenter.rb
|
293
|
+
- lib/switchman/shared_schema_cache.rb
|
293
294
|
- lib/switchman/standard_error.rb
|
294
295
|
- lib/switchman/test_helper.rb
|
295
296
|
- lib/switchman/unsharded_record.rb
|