resque-top

twitterのTL見てたら、
miyagawaさんがresque-topなるものを作ったというつぶやきが流れていたので
触ってみた。

こんな感じ

sleep 1でresque-webの内容を表示し続けるCLIツール。

resque-top

resque-web



メモ

どうやってんだろうとソースを見てみると自分なりに発見があったのでメモ。

Ctrl-Cでの抜け方

Interruptをrescueする。

    def run
      loop do
        display
        sleep 1
      end
    rescue Interrupt
    end
画面のclear
    def clear
      print "\033[2J"
    end
terminalのサイズ

これはhirbのソースから持ってきている。
stty size
あと、githubって#L61-71みたいに行指定できるんですね。

    # https://github.com/cldwalker/hirb/blob/master/lib/hirb/util.rb#L61-71
    def detect_terminal_size
      if (ENV['COLUMNS'] =~ /^\d+$/) && (ENV['LINES'] =~ /^\d+$/)
        [ENV['COLUMNS'].to_i, ENV['LINES'].to_i]
      elsif (RUBY_PLATFORM =~ /java/ || (!STDIN.tty? && ENV['TERM'])) && command_exists?('tput')
        [`tput cols`.to_i, `tput lines`.to_i]
      elsif STDIN.tty? && command_exists?('stty')
        `stty size`.scan(/\d+/).map {  |s| s.to_i }.reverse
      else
        nil
      end
    rescue Exception => e
      nil
    end
gemspec

これでgem作れるんだ。

gem build resque-top.gemspec

あと

別件ですが、resque-webは、rails3からsubpathで利用できるようになりました。

#routes.rb
require 'resque/server'


mount Resque::Server.new, :at => "/resque"