class SidekiqSpy::App
Attributes
restarting[R]
running[R]
Public Class Methods
new()
click to toggle source
# File lib/sidekiq-spy/app.rb, line 10 def initialize @running = false @restarting = false @threads = {} end
Public Instance Methods
config()
click to toggle source
# File lib/sidekiq-spy/app.rb, line 16 def config @config ||= Config.new end
configure() { |config| ... }
click to toggle source
# File lib/sidekiq-spy/app.rb, line 20 def configure yield config configure_sidekiq end
do_command(key)
click to toggle source
# File lib/sidekiq-spy/app.rb, line 56 def do_command(key) case key when 'q' # Q is very natural for Quit; Queues comes second to this stop when 'w' @screen.panel_main = :workers when 'u' # Q is already taken @screen.panel_main = :queues when 'r' @screen.panel_main = :retries when 's' @screen.panel_main = :schedules end wakey_wakey # wake threads for immediate response end
restart()
click to toggle source
# File lib/sidekiq-spy/app.rb, line 52 def restart @restarting = true end
start()
click to toggle source
# File lib/sidekiq-spy/app.rb, line 26 def start begin @running = true setup @threads[:command] ||= Thread.new do command_loop # listen for commands end @threads[:refresh] ||= Thread.new do refresh_loop # refresh frequently end @threads.each { |tname, t| t.join } ensure cleanup end end
stop()
click to toggle source
# File lib/sidekiq-spy/app.rb, line 46 def stop @running = false wakey_wakey # for Ctrl+C route; #do_command route already wakes threads end
Private Instance Methods
cleanup()
click to toggle source
# File lib/sidekiq-spy/app.rb, line 89 def cleanup @screen.close if @screen end
command_loop()
click to toggle source
# File lib/sidekiq-spy/app.rb, line 97 def command_loop while @running do next unless @screen # #refresh_loop might be reattaching screen key = @screen.next_key next unless key # keep listening if timeout do_command(key) end end
configure_sidekiq()
click to toggle source
# File lib/sidekiq-spy/app.rb, line 75 def configure_sidekiq Sidekiq.configure_client do |sidekiq_config| sidekiq_config.logger = nil sidekiq_config.redis = { :url => config.url, :namespace => config.namespace, } end end
refresh_loop()
click to toggle source
# File lib/sidekiq-spy/app.rb, line 109 def refresh_loop while @running do next unless @screen # HACK: only certain test scenarios? if @restarting || @screen.missized? # signal(s) or whilst still resizing panel_main = @screen.panel_main cleanup setup @screen.panel_main = panel_main @restarting = false end @screen.refresh sleep config.interval # go to sleep; could be rudely awoken on quit end end
setup()
click to toggle source
# File lib/sidekiq-spy/app.rb, line 85 def setup @screen = Display::Screen.new end
wakey_wakey()
click to toggle source
# File lib/sidekiq-spy/app.rb, line 93 def wakey_wakey @threads.each { |tname, t| t.run if t.status == 'sleep' } end