Module: Tantot::Agent

Defined in:
lib/tantot/agent.rb,
lib/tantot/agent/base.rb,
lib/tantot/agent/block.rb,
lib/tantot/agent/watcher.rb,
lib/tantot/agent/registry.rb

Defined Under Namespace

Classes: Base, Block, Registry, Watcher

Constant Summary collapse

AGENT_CLASSES =
[Tantot::Agent::Block, Tantot::Agent::Watcher]

Class Method Summary collapse

Class Method Details

.resolve!(watch) ⇒ Object



11
12
13
14
15
16
# File 'lib/tantot/agent.rb', line 11

def self.resolve!(watch)
  agent_classes = AGENT_CLASSES.collect {|klass| [klass, klass.identify(watch)]}.reject {|_klass, id| id.nil?}
  raise Tantot::UnresolvableAgent.new("Can't resolve agent for watch: #{watch.inspect}. Specify either a watcher class or define a block.") unless agent_classes.any?
  raise Tantot::UnresolvableAgent.new("More than one agent manages watch: #{watch.inspect}") if agent_classes.many?
  agent_classes.first
end