class Eye::Trigger::CheckDependency

Public Instance Methods

check(transition) click to toggle source
# File lib/eye/trigger/check_dependency.rb, line 5
def check(transition)
  check_dependency(transition.to_name) if transition.from_name == :up
end

Private Instance Methods

check_dependency(to) click to toggle source
# File lib/eye/trigger/check_dependency.rb, line 11
def check_dependency(to)
  processes = names.map do |name|
    Eye::Control.find_nearest_process(name, process.group_name_pure, process.app_name)
  end

  processes = processes.compact.reject { |p| p.state_name == :unmonitored }
  return if processes.empty?
  processes = Eye::Utils::AliveArray.new(processes)

  act = case to
    when :down, :restarting then :restart
    when :stopping then :stop
    when :unmonitored then :unmonitor
  end

  if act
    processes.each do |p|
      p.schedule command: act, reason: "#{act} dependecies"
    end
  end
end