Class: Legion::Provider

Inherits:
Object
  • Object
show all
Defined in:
lib/legion/provider.rb,
lib/legion/provider.rb

Defined Under Namespace

Modules: Registry Classes: CyclicDependencyError, MissingDependencyError

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(mode: :full) ⇒ Provider

Returns a new instance of Provider.



39
40
41
# File 'lib/legion/provider.rb', line 39

def initialize(mode: :full)
  @mode = mode
end

Instance Attribute Details

#modeObject (readonly)

Returns the value of attribute mode.



37
38
39
# File 'lib/legion/provider.rb', line 37

def mode
  @mode
end

Class Method Details

.adapters(mapping = nil) ⇒ Object



28
29
30
31
32
33
34
# File 'lib/legion/provider.rb', line 28

def adapters(mapping = nil)
  if mapping
    @adapters = mapping
  else
    @adapters || {}
  end
end

.depends_on(*deps) ⇒ Object



20
21
22
23
24
25
26
# File 'lib/legion/provider.rb', line 20

def depends_on(*deps)
  if deps.any?
    @depends_on = deps.map(&:to_sym)
  else
    @depends_on || []
  end
end

.provides(name = nil) ⇒ Object



12
13
14
15
16
17
18
# File 'lib/legion/provider.rb', line 12

def provides(name = nil)
  if name
    @provides = name.to_sym
    Registry.register(self)
  end
  @provides
end

Instance Method Details

#bootObject

Raises:

  • (NotImplementedError)


49
50
51
# File 'lib/legion/provider.rb', line 49

def boot
  raise NotImplementedError, "#{self.class}#boot must be implemented"
end

#nameObject



57
58
59
# File 'lib/legion/provider.rb', line 57

def name
  self.class.provides
end

#select_adapter(mode) ⇒ Object



43
44
45
46
47
# File 'lib/legion/provider.rb', line 43

def select_adapter(mode)
  @mode = mode
  adapter_path = self.class.adapters[mode]
  require adapter_path if adapter_path
end

#shutdownObject



53
54
55
# File 'lib/legion/provider.rb', line 53

def shutdown
  # default no-op
end