module ActiveCrew::Chainable

Public Instance Methods

chain() click to toggle source
# File lib/active_crew/concerns/chainable.rb, line 3
def chain
  @chain ||= @context[:chain] || []
end
commands(*args) click to toggle source
# File lib/active_crew/concerns/chainable.rb, line 7
def commands(*args)
  options = args.extract_options!
  add_to_chain args
  execute_chain options
end
execute() click to toggle source
Calls superclass method
# File lib/active_crew/concerns/chainable.rb, line 13
def execute
  super
  execute_chain
end

Private Instance Methods

add_to_chain(commands) click to toggle source
# File lib/active_crew/concerns/chainable.rb, line 20
def add_to_chain(commands)
  chain.concat commands
end
execute_chain(options = nil) click to toggle source
# File lib/active_crew/concerns/chainable.rb, line 24
def execute_chain(options = nil)
  return unless chain.present?

  name = chain.shift
  if name.is_a? Array
    name.each { |name| command name, options }
  else
    command name, options, chain: chain
  end
end