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 41
def as_current(object)
  old_object = current if current?
  self.current = object
  yield
ensure
  self.current = old_object
end
clear_current!() click to toggle source
# File lib/rails_multitenant/global_context_registry/current.rb, line 37
def clear_current!
  GlobalContextRegistry.delete(current_registry_obj)
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 51
def provide_default(provider = nil, &block)
  self.default_provider = provider ? provider.to_proc : block
end

Private Instance Methods

__clear_dependents!() click to toggle source
# File lib/rails_multitenant/global_context_registry/current.rb, line 76
def __clear_dependents!
  GlobalContextRegistry.send(:dependencies_for, __key_class).each(&:clear_current!)
end
__current_default() click to toggle source
# File lib/rails_multitenant/global_context_registry/current.rb, line 67
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 80
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 63
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 57
def current_registry_obj
  return @current_registry_obj if @current_registry_obj

  @current_registry_obj = "#{__key_class.name.underscore}_obj".to_sym
end