class Honcho::UIRunner
Public Instance Methods
log(name, message)
click to toggle source
# File lib/honcho/ui_runner.rb, line 18 def log(name, message) (color_index, color_quality) = colors[name] @log.attron(Curses.color_pair(color_index) | color_quality) do @log.addstr(name.rjust(label_width)) end @log.addstr(': ') @log.addstr(message) @log.refresh end
run()
click to toggle source
Calls superclass method
Honcho::Runner#run
# File lib/honcho/ui_runner.rb, line 8 def run setup_curses @colors = assign_colors_for_curses init_log_window draw super ensure unsetup_curses end
Private Instance Methods
bar(count, width)
click to toggle source
# File lib/honcho/ui_runner.rb, line 116 def bar(count, width) ('|' * count).ljust(width)[0...width] end
check_for_work()
click to toggle source
Calls superclass method
Honcho::Runner#check_for_work
# File lib/honcho/ui_runner.rb, line 120 def check_for_work draw super end
cols()
click to toggle source
# File lib/honcho/ui_runner.rb, line 129 def cols Curses.cols end
count_web_requests()
click to toggle source
# File lib/honcho/ui_runner.rb, line 86 def count_web_requests return unless @pstatus_for_app @pstatus_for_app['workers'].map { |s| s['Processed'].to_i }.inject(&:+) end
count_web_servers()
click to toggle source
# File lib/honcho/ui_runner.rb, line 80 def count_web_servers return unless @pstatus_for_app return unless (busy_webs = @pstatus_for_app['workers'].select { |s| s['Uptime'] }).any? busy_webs.size end
draw()
click to toggle source
# File lib/honcho/ui_runner.rb, line 36 def draw draw_queues draw_uptime end
draw_queues()
click to toggle source
# File lib/honcho/ui_runner.rb, line 41 def draw_queues adapter_names = adapters.map(&:name) max_name_width = adapter_names.map(&:size).max bar_width = cols - max_name_width - 80 table = UI::Table.new( headings: [ 'app'.ljust(max_name_width + 2), 'webs ', "req's ", 'sidekiq ', 'resque ', ' ', 'work queue'.ljust(bar_width), ' ' ], width: cols - 100, top: 1, left: 2 ) pstatus = passenger_status data = adapters_by_app.map do |app, adapters| @pstatus_for_app = pstatus[app] count = adapters.map(&:total_count).inject(&:+) sidekiq = adapters.detect { |a| a.type == 'sidekiq' } resque = adapters.detect { |a| a.type == 'resque' } [ [app, *colors[app]], [count_web_servers], [count_web_requests], [sidekiq && sidekiq.running? ? 'running' : ''], [resque && resque.running? ? 'running' : ''], ['['], [bar(count, bar_width), 2, 0], [']'] ] end table.draw(data) end
draw_uptime()
click to toggle source
# File lib/honcho/ui_runner.rb, line 91 def draw_uptime x = cols - 38 uptime = `uptime` loadavg = uptime.match(/load averages: (.*)/)[1] Curses.setpos(2, x) Curses.attron(Curses.color_pair(2)) do Curses.addstr('Load average: ') end Curses.addstr(loadavg) time = uptime.match(/up (.*), \d+ users/)[1] Curses.setpos(3, x) Curses.attron(Curses.color_pair(2)) do Curses.addstr('Uptime: ') end Curses.addstr(time) end
init_log_window()
click to toggle source
# File lib/honcho/ui_runner.rb, line 30 def init_log_window top = adapters.size + 3 @log = Curses::Window.new(lines - top, cols, top, 0) @log.scrollok(true) end
lines()
click to toggle source
# File lib/honcho/ui_runner.rb, line 125 def lines Curses.lines end
passenger_status()
click to toggle source
# File lib/honcho/ui_runner.rb, line 151 def passenger_status return {} unless show_passenger? PassengerStatus.new.data.each_with_object({}) do |app, hash| hash[app['name']] = app end end
print(text, y = nil, x = nil)
click to toggle source
# File lib/honcho/ui_runner.rb, line 108 def print(text, y = nil, x = nil) if y && x $stdout.print("\033[#{y};#{x}f#{text}") else $stdout.print(text) end end
setup_curses()
click to toggle source
# File lib/honcho/ui_runner.rb, line 133 def setup_curses Curses.init_screen Curses.start_color Curses.cbreak Curses.noecho Curses.curs_set(0) Curses.stdscr.keypad(true) end
show_passenger?()
click to toggle source
# File lib/honcho/ui_runner.rb, line 146 def show_passenger? return @show_passenger unless @show_passenger.nil? @show_passenger = system('which passenger-status &>/dev/null') end
unsetup_curses()
click to toggle source
# File lib/honcho/ui_runner.rb, line 142 def unsetup_curses Curses.close_screen end