switchman 3.5.7 → 3.5.9

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: 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