Mongrelにシグナルハンドラによるトレース機能を追加する方法。

$ kill -QUIT `cat ./log/mongrel.pid`

でトレースをオン・オフできるようにする方法。

以下のスクリプトを保存し、-Sオプションでファイルを指定してMongrelを起動します。

#
# mongrel_handlers.rb
#

require 'tracer'

@my_tracer_flg = false

trap("QUIT") { 
  p Thread.list 
  if @my_tracer_flg
    Tracer.off
    @my_tracer_flg = false
    log "-------- TRACER OFF --------"
  else
    log "-------- TRACER ON --------"
    @my_tracer_flg = true
    Tracer.on
  end
}

起動。

$ mongrel_rails -S mongrel_handlers.rb


本当はJavaのスレッドダンプみたいな機能がほしいんですが……。Thread.listを使ってなんとかならないのかな?