Class: CanTango::PermitEngine::Factory

Inherits:
Object
  • Object
show all
Includes:
Helpers::Debug
Defined in:
lib/cantango/permit_engine/factory.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods included from Helpers::Debug

#debug

Constructor Details

#initialize(ability) ⇒ Factory

creates the factory for the ability note that the ability contains the roles and role groups of the user (or account)

Parameters:

  • the (Permits::Ability)

    ability



11
12
13
# File 'lib/cantango/permit_engine/factory.rb', line 11

def initialize ability
  @ability = ability
end

Instance Attribute Details

#abilityObject

Returns the value of attribute ability.



6
7
8
# File 'lib/cantango/permit_engine/factory.rb', line 6

def ability
  @ability
end

Instance Method Details

#build!Object



15
16
17
18
# File 'lib/cantango/permit_engine/factory.rb', line 15

def build!
  debug "PermitEngine Factory: No permits could be built" if permits.empty?
  permits
end

#builder_class(builder) ⇒ Object



38
39
40
41
# File 'lib/cantango/permit_engine/factory.rb', line 38

def builder_class builder
  return "CanTango::PermitEngine::Builder::SpecialPermits" if builder == :special
  "CanTango::Permits::#{builder.to_s.camelize}Permit::Builder"
end

#buildersObject



43
44
45
# File 'lib/cantango/permit_engine/factory.rb', line 43

def builders
  CanTango.config.permits.enabled
end

#create_builder(builder) ⇒ Object



33
34
35
36
# File 'lib/cantango/permit_engine/factory.rb', line 33

def create_builder builder
  clazz = builder_class(builder)
  clazz.constantize.new(ability)
end

#optionsObject



47
48
49
# File 'lib/cantango/permit_engine/factory.rb', line 47

def options
  ability.options
end

#permitsObject



20
21
22
23
24
25
26
27
# File 'lib/cantango/permit_engine/factory.rb', line 20

def permits
  @permits ||= builders.inject([]) do |permits, builder|
    debug "++ Permit Builder: #{builder_class builder}"
    built_permits = permits_built_with(builder)
    debug "== Permits built: #{built_permits.size}"
    permits = permits + built_permits if built_permits
  end.flatten
end

#permits_built_with(builder) ⇒ Object



29
30
31
# File 'lib/cantango/permit_engine/factory.rb', line 29

def permits_built_with builder
  create_builder(builder).build
end