Class: Configuration::SourceFailover
- Inherits:
-
Scope
- Object
- Scope
- Configuration::SourceFailover
show all
- Includes:
- ClassLogging
- Defined in:
- lib/httpimagestore/configuration/source_failover.rb
Class Method Summary
collapse
Instance Method Summary
collapse
Methods inherited from Scope
#initialize, node_parsers, #parse, register_node_parser
Class Method Details
.match(node) ⇒ Object
17
18
19
|
# File 'lib/httpimagestore/configuration/source_failover.rb', line 17
def self.match(node)
node.name == 'source_failover'
end
|
.parse(configuration, node) ⇒ Object
21
22
23
24
25
26
27
28
29
30
31
32
33
|
# File 'lib/httpimagestore/configuration/source_failover.rb', line 21
def self.parse(configuration, node)
handler_configuration = Struct.new(
:global,
:sources
).new
handler_configuration.global = configuration.global
handler_configuration.sources = []
failover = self.new(handler_configuration)
configuration.sources << failover
failover.parse(node)
end
|
Instance Method Details
#realize(request_state) ⇒ Object
35
36
37
38
39
40
41
42
43
44
45
46
47
48
|
# File 'lib/httpimagestore/configuration/source_failover.rb', line 35
def realize(request_state)
errors = []
@configuration.sources.each do |source|
begin
log.debug "trying source: #{source}"
return source.realize(request_state) unless source.respond_to? :excluded? and source.excluded?(request_state)
rescue => error
errors << error
log.warn "source #{source} failed; trying next source", error
end
end
log.error "all sources: #{@configuration.sources.map(&:to_s).join(', ')} failed; giving up"
raise SourceFailoverAllFailedError.new(@configuration.sources.to_a, errors)
end
|