rails_multitenant 0.18.0 → 0.18.1

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: 695a8b94b4a25b3861271091cdd21ba92dd4c8bf6bd18d38c3b419646de1c268
4
- data.tar.gz: 20cdce2df8969538ee33a144d8f2083e9dd81b129b1ef1220c52780564526257
3
+ metadata.gz: 3336c472e8e9f781be0c82a83859dd33c9566a4753c590a8527804974384a5ce
4
+ data.tar.gz: 9963126e661148092ec99d18a431b6049ddbb2cc8448bd10503bea2765567750
5
5
  SHA512:
6
- metadata.gz: c221b74528939f2ae81d3547ade6c8f7193c1d0837c4a84b50fd3d73ef536a5998c16d5ec1f4f9bda6160642aa3356def927b4150849af718b2c5a7c6fcda761
7
- data.tar.gz: 637d3d5c728fbe5c951c6bc0342007fc28dc59a0435f9f7311037515c708796a4ad443ba9bc72f87e9874fd1d94c88152219fd1508e0b5dea1b76bb5f35333c8
6
+ metadata.gz: 443db952a9e4b0d8769eac2a58d7b004fba3391fdc08ff1883a5a05c37a43fbebc1237c78c16c104aad8da67c896e9ac253073a8627b9c13a129d092d0d21995
7
+ data.tar.gz: ee3d3bbb473467c6d49a8c7b388a1e6eb236a4b5cad84753a88eecb0786896039478b91a68b2cba07deb04eaefa3848464bf4385d36fa996271ce2c50d27a9bd
@@ -34,8 +34,9 @@ module RailsMultitenant
34
34
  current || raise("No current #{name} set")
35
35
  end
36
36
 
37
- def clear_current!
37
+ def clear_current!(cleared = nil)
38
38
  GlobalContextRegistry.delete(current_registry_obj)
39
+ __clear_dependents!(cleared)
39
40
  end
40
41
 
41
42
  def as_current(object)
@@ -73,8 +74,13 @@ module RailsMultitenant
73
74
  end
74
75
  end
75
76
 
76
- def __clear_dependents!
77
- GlobalContextRegistry.send(:dependencies_for, __key_class).each(&:clear_current!)
77
+ def __clear_dependents!(initial_cleared = nil)
78
+ GlobalContextRegistry.send(:dependencies_for, __key_class).tap do |dependencies|
79
+ next unless dependencies.present?
80
+
81
+ (cleared = initial_cleared || []) << self
82
+ dependencies.each { |obj| obj.clear_current!(cleared) unless cleared.include?(obj) }
83
+ end
78
84
  end
79
85
 
80
86
  def __key_class
@@ -60,15 +60,22 @@ module RailsMultitenant
60
60
  self.current = old_model
61
61
  end
62
62
 
63
- def clear_current!
63
+ def clear_current!(cleared = nil)
64
64
  GlobalContextRegistry.delete(current_instance_registry_obj)
65
+ __clear_dependents!(cleared)
65
66
  end
66
67
 
67
68
  private
68
69
 
69
- def __clear_dependents!
70
+ def __clear_dependents!(initial_cleared = nil)
70
71
  key_class = respond_to?(:base_class) ? base_class : self
71
- GlobalContextRegistry.send(:dependencies_for, key_class).each(&:clear_current!)
72
+
73
+ GlobalContextRegistry.send(:dependencies_for, key_class).tap do |dependencies|
74
+ next unless dependencies.present?
75
+
76
+ (cleared = initial_cleared || []) << self
77
+ dependencies.each { |obj| obj.clear_current!(cleared) unless cleared.include?(obj) }
78
+ end
72
79
  end
73
80
 
74
81
  def current_instance_registry_id
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module RailsMultitenant
4
- VERSION = '0.18.0'
4
+ VERSION = '0.18.1'
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rails_multitenant
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.18.0
4
+ version: 0.18.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Pat Breault
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-02-10 00:00:00.000000000 Z
11
+ date: 2023-03-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activerecord