Используя IRB (то есть вызывая «отладчик») с Thor? - PullRequest
0 голосов
/ 12 июля 2011

Я пытаюсь заставить Thor вызвать IRB-запрос при достижении в коде отладчика (например, Rails и т. Д.). Хотя я могу запустить отладчик, как заставить IRB запускаться автоматически при запуске отладчика?

В настоящее время я делаю следующее в файле .thor:

require 'ruby-debug'

desc 'irb', 'Load IRB console for this app.'
def irb
  puts 'Starting IRB...'
  debugger
end

Это приводит к запуску отладчика, но IRB должен быть явно запущен, введя в командной строке «irb»:

$ thor app
Starting IRB...
(rdb:1) irb
ruby-1.9.2-p180 :001 > puts 'hello'
hello
=> nil
ruby-1.9.2-p180 :002 > exit 
(rdb:1) exit
Really quit? (y/n) y

Как получить мгновенный запуск IRB, чтобы мне не нужно было набирать irb и дополнительный выход?

Спасибо!

1 Ответ

1 голос
/ 12 июля 2011

Для тех из вас, у кого может возникнуть один и тот же вопрос, я нашел два решения (см. http://bashdb.sourceforge.net/ruby-debug.html#Autoirb):


ВАРИАНТ 1: Установите для параметра autoirb значение on (мои предпочтения)

Это хорошо, потому что кажется, что он автоматически включает ваш локальный .irbrc. Недостатком является то, что вам все равно придется дважды нажать «exit», если вы хотите выйти из приложения (один раз для выхода из irb,второй для выхода из отладчика).

require 'ruby-debug'
::Debugger.settings[:autoirb] = 1

ВАРИАНТ 2: Установите для autoeval значение on.

Это хорошо, потому что он автоматически оценивает неизвестные командыв отладчике и требует ввода 'exit' только один раз для выхода, поскольку технически вы все еще находитесь в консоли отладчика (а не во вложенном сеансе irb), а ваши операторы просто автоматически оцениваются. Недостатком является то, что ваш .irbrcнастройки игнорируются. Rails использует этот метод (дополнительная информация по адресу: http://www.catapult -creative.com / 2009/08/12 / make-ruby-debug-work-better / ).

require 'ruby-debug'
::Debugger.settings[:autoeval] = 1
...