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!() click to toggle source
# File lib/rails_multitenant/global_context_registry/current_instance.rb, line 63
def clear_current!
  GlobalContextRegistry.delete(current_instance_registry_obj)
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!() click to toggle source
# File lib/rails_multitenant/global_context_registry/current_instance.rb, line 69
def __clear_dependents!
  key_class = respond_to?(:base_class) ? base_class : self
  GlobalContextRegistry.send(:dependencies_for, key_class).each(&:clear_current!)
end
current_instance_registry_id() click to toggle source
# File lib/rails_multitenant/global_context_registry/current_instance.rb, line 74
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 81
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