module RailsMultitenant::GlobalContextRegistry::CurrentInstance::ClassMethods
Public Instance Methods
as_current(model) { || ... }
click to toggle source
# File lib/rails_multitenant/global_context_registry/current_instance.rb, line 55 def as_current(model) old_model = current self.current = model yield ensure self.current = old_model end
as_current_id(id) { || ... }
click to toggle source
# File lib/rails_multitenant/global_context_registry/current_instance.rb, line 47 def as_current_id(id) old_id = current_id self.current_id = id yield ensure self.current_id = old_id end
clear_current!(cleared = nil)
click to toggle source
# File lib/rails_multitenant/global_context_registry/current_instance.rb, line 63 def clear_current!(cleared = nil) GlobalContextRegistry.delete(current_instance_registry_obj) __clear_dependents!(cleared) end
current()
click to toggle source
# File lib/rails_multitenant/global_context_registry/current_instance.rb, line 33 def current GlobalContextRegistry.fetch(current_instance_registry_obj) do (current_id ? find(current_id) : nil) end end
current!()
click to toggle source
# File lib/rails_multitenant/global_context_registry/current_instance.rb, line 43 def current! current || raise("No current #{name} set") end
current=(object)
click to toggle source
# File lib/rails_multitenant/global_context_registry/current_instance.rb, line 21 def current=(object) raise "#{object} is not a #{self}" if object.present? && !object.is_a?(self) GlobalContextRegistry.set(current_instance_registry_obj, object) GlobalContextRegistry.set(current_instance_registry_id, object.try(:id)) __clear_dependents! end
current?()
click to toggle source
# File lib/rails_multitenant/global_context_registry/current_instance.rb, line 39 def current? !!current end
current_id()
click to toggle source
# File lib/rails_multitenant/global_context_registry/current_instance.rb, line 29 def current_id GlobalContextRegistry.get(current_instance_registry_id) end
current_id=(id)
click to toggle source
# File lib/rails_multitenant/global_context_registry/current_instance.rb, line 15 def current_id=(id) GlobalContextRegistry.delete(current_instance_registry_obj) GlobalContextRegistry.set(current_instance_registry_id, id) __clear_dependents! end
Private Instance Methods
__clear_dependents!(initial_cleared = nil)
click to toggle source
# File lib/rails_multitenant/global_context_registry/current_instance.rb, line 70 def __clear_dependents!(initial_cleared = nil) key_class = respond_to?(:base_class) ? base_class : self GlobalContextRegistry.send(:dependencies_for, key_class).tap do |dependencies| next unless dependencies.present? (cleared = initial_cleared || []) << self dependencies.each { |obj| obj.clear_current!(cleared) unless cleared.include?(obj) } end end
current_instance_registry_id()
click to toggle source
# File lib/rails_multitenant/global_context_registry/current_instance.rb, line 81 def current_instance_registry_id return @current_instance_registry_id if @current_instance_registry_id key_class = respond_to?(:base_class) ? base_class : self @current_instance_registry_id = "#{key_class.name.underscore}_id".to_sym end
current_instance_registry_obj()
click to toggle source
# File lib/rails_multitenant/global_context_registry/current_instance.rb, line 88 def current_instance_registry_obj return @current_instance_registry_obj if @current_instance_registry_obj key_class = respond_to?(:base_class) ? base_class : self @current_instance_registry_obj = "#{key_class.name.underscore}_obj".to_sym end