switchman 3.5.7 → 3.5.9

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 615b594dc138a3a78ce121713f4bdd4f80c6a681d53c40d530bf41b5e3b0c131
4
- data.tar.gz: 19c663ef30ce99c2ad900b170d5c0b94b1cc92d29207de7d50bb68eeaafab83c
3
+ metadata.gz: 64f3ba29604ff0a4f1db0b5c49000a636865f38c45ad6cb15eae252d98623d49
4
+ data.tar.gz: 68a22ead418800884673abd7a08ab84a38f548b065930e28258a25947ac4ab8e
5
5
  SHA512:
6
- metadata.gz: 18cc255715318ec631fd865db4eb56160cbccbcea43bae8610d9d1837d016aed4365d943025b4fbf9a42cad747b1e2a018bb2a2caf310e1cd53c97b0d2e9f8f1
7
- data.tar.gz: 6d08cdb0b895d35194b10114e7ce04bdd76268a85c54a6ad1a5f5ef67cc2d9a9ebddc0c77528b255a962cdc3c25501d025de7c454c5f2d6385f5a019a210fbed
6
+ metadata.gz: 49bf3b77179a2d5a5788cfaec67aababa9bece27589bddadc387f2eafc2651b1cd6ac6397431d5a955fad05747acd8af2fe6e1c59597a447bf91209508771138
7
+ data.tar.gz: ed4ae505a24d605802c67793a69d8462905ed16f638490e8fa0bdca1bb8e55f2b49f154e9c7ebd85ac6d2ba92321e7de962a559a5489e7821cc094da944d207f
@@ -33,7 +33,14 @@ module Switchman
33
33
  # when called for the owner, will be returned relative to shard the query will execute on
34
34
  Shard.with_each_shard(shards,
35
35
  [klass.connection_class_for_self, owner.class.connection_class_for_self].uniq) do
36
- super
36
+ if reflection.options[:multishard] && owner.respond_to?(:associated_shards) && reflection.has_scope?
37
+ # Prevent duplicate results when reflection has a scope (when it would use the skip_statement_cache? path)
38
+ # otherwise, the super call will set the shard_value to the object, causing it to iterate too many times
39
+ # over the associated shards
40
+ scope.shard(Shard.current(scope.klass.connection_class_for_self), :association).to_a
41
+ else
42
+ super
43
+ end
37
44
  end
38
45
  end
39
46
 
@@ -268,12 +268,18 @@ module Switchman
268
268
  end
269
269
 
270
270
  def primary_shard
271
- unless instance_variable_defined?(:@primary_shard)
271
+ return nil unless primary_shard_id
272
+
273
+ Shard.lookup(primary_shard_id)
274
+ end
275
+
276
+ def primary_shard_id
277
+ unless instance_variable_defined?(:@primary_shard_id)
272
278
  # if sharding isn't fully set up yet, we may not be able to query the shards table
273
- @primary_shard = Shard.default if Shard.default.database_server == self
274
- @primary_shard ||= shards.where(name: nil).first
279
+ @primary_shard_id = Shard.default.id if Shard.default.database_server == self
280
+ @primary_shard_id ||= shards.where(name: nil).first&.id
275
281
  end
276
- @primary_shard
282
+ @primary_shard_id
277
283
  end
278
284
  end
279
285
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Switchman
4
- VERSION = "3.5.7"
4
+ VERSION = "3.5.9"
5
5
  end
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.5.7
4
+ version: 3.5.9
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-07-31 00:00:00.000000000 Z
13
+ date: 2023-08-23 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: activerecord