module Eye::Controller::Status

Public Instance Methods

debug_data(*args) click to toggle source
# File lib/eye/controller/status.rb, line 3
def debug_data(*args)
  h = args.extract_options!
  actors = Celluloid::Actor.all.map { |actor| actor.wrapped_object.class.to_s }.group_by { |a| a }
  actors = actors.map { |k, v| [k, v.size] }.sort_by { |a| a[1] }.reverse

  res = {
    about: Eye::ABOUT,
    resources: Eye::SystemResources.resources($$),
    ruby: RUBY_DESCRIPTION,
    gems: %w[Celluloid Celluloid::IO StateMachines NIO Timers Sigar].map { |c| gem_version(c) },
    logger: Eye::Logger.args.present? ? [Eye::Logger.dev.to_s, *Eye::Logger.args] : Eye::Logger.dev.to_s,
    home: Eye::Local.home,
    dir: Eye::Local.dir,
    pid_path: Eye::Local.pid_path,
    sock_path: Eye::Local.socket_path,
    actors: actors
  }

  res[:config_yaml] = YAML.dump(current_config.to_h) if h[:config].present?

  res
end
history_data(*args) click to toggle source
# File lib/eye/controller/status.rb, line 35
def history_data(*args)
  res = {}
  history_objects(*args).each do |process|
    res[process.full_name] = process.scheduler_history.reject { |c| c[:state] == :check_crash }
  end
  res
end
info_data(*args) click to toggle source
# File lib/eye/controller/status.rb, line 26
def info_data(*args)
  h = args.extract_options!
  { subtree: info_objects(*args).map { |a| a.status_data(h) } }
end
short_data(*args) click to toggle source
# File lib/eye/controller/status.rb, line 31
def short_data(*args)
  { subtree: info_objects(*args).select { |o| o.class == Eye::Application }.map(&:status_data_short) }
end

Private Instance Methods

gem_version(klass) click to toggle source
# File lib/eye/controller/status.rb, line 52
def gem_version(klass)
  v = nil
  begin
    v = eval("#{klass}::VERSION::STRING")
  rescue
    v = eval("#{klass}::VERSION") rescue ''
  end
  "#{klass}=#{v}"
end
history_objects(*args) click to toggle source
# File lib/eye/controller/status.rb, line 62
def history_objects(*args)
  args = ['*'] if args.empty?
  res = []
  matched_objects(*args) do |obj|
    if obj.is_a?(Eye::Process)
      res << obj
    elsif obj.is_a?(Eye::ChildProcess)
    else
      res += obj.processes.to_a
    end
  end
  Eye::Utils::AliveArray.new(res)
end
info_objects(*args) click to toggle source
# File lib/eye/controller/status.rb, line 45
def info_objects(*args)
  res = []
  return @applications if args.empty?
  matched_objects(*args) { |obj| res << obj }
  res
end