Class: Multiplicity::Tenant

Inherits:
Object
  • Object
show all
Defined in:
lib/multiplicity/tenant.rb

Constant Summary collapse

UnknownTenantError =
Class.new(StandardError)

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.column_namesObject



24
25
26
# File 'lib/multiplicity/tenant.rb', line 24

def column_names
  attribute_set.map(&:name)
end

.currentObject



28
29
30
# File 'lib/multiplicity/tenant.rb', line 28

def current
  Thread.current[:multiplicity_tenant]
end

.current=(value) ⇒ Object



32
33
34
# File 'lib/multiplicity/tenant.rb', line 32

def current=(value)
  Thread.current[:multiplicity_tenant] = value
end

.current_idObject



36
37
38
# File 'lib/multiplicity/tenant.rb', line 36

def current_id
  current && current.id
end

.find_by(field, value) ⇒ Object



52
53
54
55
56
57
58
59
# File 'lib/multiplicity/tenant.rb', line 52

def find_by(field, value)
  return current if current && current.send(field) == value

  record = Multiplicity.adapter.find_by(field, value)

  self.current = nil
  self.current = new(record) if record
end

.find_by!(field, value) ⇒ Object



61
62
63
# File 'lib/multiplicity/tenant.rb', line 61

def find_by!(field, value)
  find_by(field, value) or raise UnknownTenantError, "Unknown Tenant #{field}: #{value}"
end

.load(subdomain) ⇒ Object



48
49
50
# File 'lib/multiplicity/tenant.rb', line 48

def load(subdomain)
  find_by :subdomain, subdomain
end

.use_tenant(subdomain) ⇒ Object



40
41
42
43
44
45
46
# File 'lib/multiplicity/tenant.rb', line 40

def use_tenant(subdomain)
  previous = Tenant.current
  find_by :subdomain, subdomain
  yield
ensure
  self.current = previous
end

Instance Method Details

#archived?Boolean

Returns:

  • (Boolean)


15
16
17
# File 'lib/multiplicity/tenant.rb', line 15

def archived?
  !!deleted_at
end

#uri(domain = Multiplicity.domain) ⇒ Object



19
20
21
# File 'lib/multiplicity/tenant.rb', line 19

def uri(domain = Multiplicity.domain)
  URI("https://#{ subdomain }.#{ domain }")
end