class ResqueJobsTree::Definitions::Node
Attributes
name[RW]
node_childs[RW]
options[RW]
parent[RW]
tree[RW]
Public Class Methods
new(name, tree, parent=nil)
click to toggle source
# File lib/resque_jobs_tree/definitions/node.rb, line 5 def initialize name, tree, parent=nil @tree = tree @name = name.to_s @parent = parent @node_childs = [] @options = {} end
Public Instance Methods
childs(&block)
click to toggle source
# File lib/resque_jobs_tree/definitions/node.rb, line 29 def childs &block @childs ||= block end
find(_name, first=true)
click to toggle source
# File lib/resque_jobs_tree/definitions/node.rb, line 49 def find _name, first=true return self if name == _name.to_s node_childs.inject(nil){|result,node| result ||= node.find(_name, false) } || (first && raise(ResqueJobsTree::TreeDefinitionInvalid, "Cannot find node #{_name} in #{tree.name}")) end
inspect()
click to toggle source
# File lib/resque_jobs_tree/definitions/node.rb, line 89 def inspect "<ResqueJobsTree::Node @name=#{name}>" end
leaf?()
click to toggle source
# File lib/resque_jobs_tree/definitions/node.rb, line 37 def leaf? @node_childs.empty? end
node(name, options={})
click to toggle source
# File lib/resque_jobs_tree/definitions/node.rb, line 13 def node name, options={}, &block ResqueJobsTree::Definitions::Node.new(name, tree, self).tap do |node| node.options = options @node_childs << node if block_given? node.instance_eval &block elsif options.has_key? :triggerable node.perform {} end end end
nodes()
click to toggle source
# File lib/resque_jobs_tree/definitions/node.rb, line 85 def nodes node_childs+node_childs.map(&:nodes) end
perform(&block)
click to toggle source
# File lib/resque_jobs_tree/definitions/node.rb, line 33 def perform &block @perform ||= block end
root?()
click to toggle source
# File lib/resque_jobs_tree/definitions/node.rb, line 41 def root? parent.nil? end
siblings()
click to toggle source
# File lib/resque_jobs_tree/definitions/node.rb, line 45 def siblings root? ? [] : (parent.node_childs - [self]) end
spawn(resources, parent=nil)
click to toggle source
# File lib/resque_jobs_tree/definitions/node.rb, line 25 def spawn resources, parent=nil ResqueJobsTree::Node.new self, resources, parent end
validate!()
click to toggle source
# File lib/resque_jobs_tree/definitions/node.rb, line 55 def validate! # Should have a child's naming [:job1, ...] and node childs Proc implementation associated # node :job1 do # perform {} # end # ... if (childs.kind_of?(Proc) && node_childs.empty?) || (childs.nil? && !node_childs.empty?) raise ResqueJobsTree::NodeDefinitionInvalid, "node `#{name}` from tree `#{tree.name}` should defines childs and child nodes" end # Should have an implementation # node :job1 do # perform {} # end if !perform.kind_of? Proc and !options.has_key? :triggerable raise ResqueJobsTree::NodeDefinitionInvalid, "node `#{name}` from tree `#{tree.name}` has no perform block" end # Naming Should be uniq if (tree.nodes - [self]).map(&:name).include? name raise ResqueJobsTree::NodeDefinitionInvalid, "node name `#{name}` is already taken in tree `#{tree.name}`" end # Recursive call for validate all of tree node_childs.each &:validate! end