Я хотел бы ввести отладчик после ввода ctrl-C (или отправки SIGINT). У меня установлен отладчик (я запускаю Ruby 1.9.3) и проверял, что он работает. Я добавил это в свои установочные файлы (это для Padrino, но я предполагаю, что это будет похоже на Rails):
# file: config/boot.rb
Padrino.before_load do
trap("SIGINT") { debugger } if Padrino.env == :development
end
... но ввод Ctrl-C не вызывает отладчик. На самом деле, если я заменю debugger
на puts "saw an interrupt!"
, набрав Ctrl-C, это не приведет к тому, что печать тоже произойдет.
Обновление
Следуя это предложение от Майка Данлави, я пробовал явно называть catch Interrupt
из отладчика:
$ rdebug `which padrino` console
^Z^Z$HOME/usr/bin/padrino:9
require 'rubygems'
(rdb:1) catch Interrupt
Catch exception Interrupt.
(rdb:1) c
=> Loading development console (Padrino v.0.10.7)
=> Loading Application BlueDotAe
=> Loading Application Admin
irb(main):001:0> C-c C-c^C
irb(main):001:0>
Без радости - прерывание не попало в отладчик.
Что мне не хватает?