module RailsMultitenant::GlobalContextRegistry::Current::ClassMethods
Public Instance Methods
as_current(object) { || ... }
click to toggle source
# File lib/rails_multitenant/global_context_registry/current.rb, line 42 def as_current(object) old_object = current if current? self.current = object yield ensure self.current = old_object end
clear_current!(cleared = nil)
click to toggle source
# File lib/rails_multitenant/global_context_registry/current.rb, line 37 def clear_current!(cleared = nil) GlobalContextRegistry.delete(current_registry_obj) __clear_dependents!(cleared) end
current()
click to toggle source
# File lib/rails_multitenant/global_context_registry/current.rb, line 18 def current GlobalContextRegistry.fetch(current_registry_obj) { __current_default } end
current!()
click to toggle source
# File lib/rails_multitenant/global_context_registry/current.rb, line 33 def current! current || raise("No current #{name} set") end
current=(object)
click to toggle source
# File lib/rails_multitenant/global_context_registry/current.rb, line 22 def current=(object) raise "#{object} is not a #{self}" if object.present? && !object.is_a?(self) GlobalContextRegistry.set(current_registry_obj, object) __clear_dependents! end
current?()
click to toggle source
# File lib/rails_multitenant/global_context_registry/current.rb, line 29 def current? GlobalContextRegistry.get(current_registry_obj).present? end
provide_default(provider = nil, &block)
click to toggle source
# File lib/rails_multitenant/global_context_registry/current.rb, line 52 def provide_default(provider = nil, &block) self.default_provider = provider ? provider.to_proc : block end
Private Instance Methods
__clear_dependents!(initial_cleared = nil)
click to toggle source
# File lib/rails_multitenant/global_context_registry/current.rb, line 77 def __clear_dependents!(initial_cleared = nil) 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_default()
click to toggle source
# File lib/rails_multitenant/global_context_registry/current.rb, line 68 def __current_default if default_provider default = default_provider.call(self) raise "#{default} is not a #{self}" if default.present? && !default.is_a?(self) default end end
__key_class()
click to toggle source
# File lib/rails_multitenant/global_context_registry/current.rb, line 86 def __key_class respond_to?(:base_class) ? base_class : self end
current_registry_default_provider()
click to toggle source
# File lib/rails_multitenant/global_context_registry/current.rb, line 64 def current_registry_default_provider "#{__key_class.name.underscore}_default_provider".to_sym end
current_registry_obj()
click to toggle source
# File lib/rails_multitenant/global_context_registry/current.rb, line 58 def current_registry_obj return @current_registry_obj if @current_registry_obj @current_registry_obj = "#{__key_class.name.underscore}_obj".to_sym end