switchman 3.5.8 → 3.5.10

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: 88184c7066c4920ceb4b073e35742a8dd4c2b008d2e99ec58c83d17b602f94de
4
- data.tar.gz: d9cc2ac7ea0f572d567c06a7afc5b21019ecb05a6bccbe111c606a19011af113
3
+ metadata.gz: a5501276e4bb51045e5d329a0cf74776a5b13318d2253d3361073f6df18c0c9b
4
+ data.tar.gz: 5a03efa22b8e2113f3c411b463a363f92282329e15e020a24f0b1c16a59ddcb5
5
5
  SHA512:
6
- metadata.gz: 523170b15e3509084fcc76fcf8809883e24d4ea40f5b16f09362023c536b847af3a52fd888bb97ed983b0781d07b5e4ca3ad86ee9ee8e1b13b112bbefa4fb3b8
7
- data.tar.gz: b2e6328a42baf46c0b4bbc82a0a37cc0e4dcf45d0a51323b21f8cbff005e0d7daf2c90b5a213660bc1c8296022dfcdec284473f8a48aafe8d9393641fd990e4d
6
+ metadata.gz: b1bebdf8811f527233b21c2f138682dd52f165edfc0f5929c7166df1367e273431f33777aa71b7c5768762c889208caebc7df804ff0de16f2d7e34384a951f5b
7
+ data.tar.gz: efd7c3efed799eb33eb0e9f1e549cd0bbbcdbc9b4713359df029bedf53c05bd2b841d557e4854e8eb19153ab42b768b2b386ce501c8174c692e10b125c28a846
@@ -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
 
@@ -13,8 +13,10 @@ module Switchman
13
13
  Thread.current[:switchman_error_handler] = true
14
14
 
15
15
  @active_shards ||= Shard.active_shards
16
- rescue ThreadError # e.g. `require': can't be called from trap context (ThreadError)
17
- # intentionally empty
16
+ rescue
17
+ # intentionally empty - don't allow calculating the active_shards to prevent
18
+ # creating the StandardError for any reason. this prevents various random issues
19
+ # when a StandardError is created within a finalizer
18
20
  ensure
19
21
  Thread.current[:switchman_error_handler] = nil
20
22
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Switchman
4
- VERSION = "3.5.8"
4
+ VERSION = "3.5.10"
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.8
4
+ version: 3.5.10
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-08-07 00:00:00.000000000 Z
13
+ date: 2023-10-02 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: activerecord
@@ -80,20 +80,6 @@ dependencies:
80
80
  - - "<"
81
81
  - !ruby/object:Gem::Version
82
82
  version: '7.1'
83
- - !ruby/object:Gem::Dependency
84
- name: appraisal
85
- requirement: !ruby/object:Gem::Requirement
86
- requirements:
87
- - - "~>"
88
- - !ruby/object:Gem::Version
89
- version: '2.3'
90
- type: :development
91
- prerelease: false
92
- version_requirements: !ruby/object:Gem::Requirement
93
- requirements:
94
- - - "~>"
95
- - !ruby/object:Gem::Version
96
- version: '2.3'
97
83
  - !ruby/object:Gem::Dependency
98
84
  name: byebug
99
85
  requirement: !ruby/object:Gem::Requirement