module MultiTenantSupport::ActiveJob

Attributes

current_tenant[RW]

Public Instance Methods

deserialize(job_data) click to toggle source
Calls superclass method
# File lib/multi_tenant_support/active_job.rb, line 63
def deserialize(job_data)
  self.current_tenant = find_current_tenant(job_data)
  MultiTenantSupport.under_tenant(current_tenant) do
    super
  end
end
execute(job_data) click to toggle source
Calls superclass method
# File lib/multi_tenant_support/active_job.rb, line 28
def execute(job_data)
  keep_current_tenant_unchange do
    super(job_data)
  end
end
keep_current_tenant_unchange() { || ... } click to toggle source
# File lib/multi_tenant_support/active_job.rb, line 36
def keep_current_tenant_unchange
  _current_tenant = MultiTenantSupport::Current.tenant_account
  yield
ensure
  MultiTenantSupport::Current.tenant_account = _current_tenant
end
perform_now(*args) click to toggle source
# File lib/multi_tenant_support/active_job.rb, line 13
def perform_now(*args)
  job = job_or_instantiate(*args)
  job.current_tenant = MultiTenantSupport.current_tenant
  job.perform_now
end
serialize() click to toggle source
Calls superclass method
# File lib/multi_tenant_support/active_job.rb, line 50
def serialize
  if MultiTenantSupport.current_tenant
    super.merge({
      "multi_tenant_support" => {
        "id" => MultiTenantSupport.current_tenant.id,
        "class" => MultiTenantSupport.current_tenant.class.name
      }
    })
  else
    super
  end
end

Private Instance Methods

find_current_tenant(data) click to toggle source
# File lib/multi_tenant_support/active_job.rb, line 72
def find_current_tenant(data)
  return unless data.has_key?("multi_tenant_support")

  tenant_klass = data["multi_tenant_support"]["class"].constantize
  tenant_id = data["multi_tenant_support"]["id"]

  tenant_klass.find tenant_id
end