faye-websocketを使ったコードを書いているときに、on(:message)
とかのイベントハンドラでエラーがあっても何も表示されないのでかなりあせりました。
faye-websocketが非同期処理に使っているEventMachineがそもそもそういう動作っぽいです。
開発中は以下のようなコードをファイルの先頭あたりにでもいれておけばイベントハンドラ内でのエラーが表示されるようになって幸福実現です。
EM.error_handler{ |e|
STDERR.puts e.message
STDERR.puts e.backtrace.join("\n")
}
参考: http://stackoverflow.com/questions/7628232/how-to-catch-top-level-failures-on-an-eventmachine-server