Class: UltraDNSUpdater::Strategies::Multiple
- Inherits:
-
UpdateStrategy
- Object
- UpdateStrategy
- UltraDNSUpdater::Strategies::Multiple
- Defined in:
- lib/ultradns_updater/strategies/multiple.rb
Class Method Summary collapse
Instance Method Summary collapse
-
#initialize(ultradns, strategy_section, logger = ::Logger.new(STDOUT)) ⇒ Multiple
constructor
A new instance of Multiple.
-
#strategies ⇒ Object
should be overwritten.
- #update ⇒ Object
Methods inherited from UpdateStrategy
#iface_ip, #strategy_config, #strategy_to_use, #ultradns
Methods included from Preconditions
Constructor Details
#initialize(ultradns, strategy_section, logger = ::Logger.new(STDOUT)) ⇒ Multiple
Returns a new instance of Multiple.
23 24 25 26 27 28 29 30 |
# File 'lib/ultradns_updater/strategies/multiple.rb', line 23 def initialize(ultradns, strategy_section, logger = ::Logger.new(STDOUT)) super(ultradns, strategy_section, logger) @strategy_instances = [] strategies.each do |strategy_name, strategy_clazz| @strategy_instances << strategy_clazz.new(ultradns, strategy_section.merge(:use => strategy_name), logger) end end |
Class Method Details
.factory(strategies) ⇒ Object
17 18 19 20 21 |
# File 'lib/ultradns_updater/strategies/multiple.rb', line 17 def self.factory(strategies) clazz = Class.new(UltraDNSUpdater::Strategies::Multiple) clazz.send(:define_method, :strategies) {strategies} clazz end |
Instance Method Details
#strategies ⇒ Object
should be overwritten
33 |
# File 'lib/ultradns_updater/strategies/multiple.rb', line 33 def strategies; []; end |
#update ⇒ Object
35 36 37 38 39 40 41 42 43 44 45 46 47 |
# File 'lib/ultradns_updater/strategies/multiple.rb', line 35 def update() @strategy_instances.each do |strategy| begin @logger.info("Trying strategy #{strategy.class.name}") if @logger result = strategy.update() return result if result rescue => e # ignore, try next @logger.debug("Failed: #{e.inspect}\n" + e.backtrace.join("\n")) end end nil end |