ruby-debug с точками останова Pow никогда не срабатывает

Я пытаюсь использовать ruby-debug с Pow. Приложение Рельс 3.

Я сделал все здесь: https://gist.github.com/1098830

Я перезапустил сервер и машину несколько раз. Я могу заставить rdebug подключиться:

→ rdebug -c
Connected.

но он никогда не останавливается на точках останова.

Есть идеи, что может происходить? Несколько часов назад я достиг нескольких точек останова, а не с тех пор.

контроллер

  def index
    debugger
    ...
  end

Gemfile

gem 'ruby-debug19', :require => 'ruby-debug'

разработка.рб

EG::Application.configure do
  ...
  require 'ruby-debug'
  Debugger.start_remote
  Debugger.settings[:autoeval] = true
  puts "=> Debugger enabled"
end

person 99miles    schedule 25.01.2012    source источник
comment
работает без паута? какую версию рубина вы используете?   -  person Nicolas Garnil    schedule 25.01.2012
comment
да, работает под вебриком и пассажиром. рубин 1.9.2p290   -  person 99miles    schedule 25.01.2012


Ответы (2)


Это происходит потому, что Pow по умолчанию запускает два рабочих процесса, а rdebug подключается только к одному из них. Если другой процесс обслуживает запрос, то никаких игральных костей. Решение состоит в том, чтобы заставить Pow запустить один рабочий процесс следующим образом:

  1. Отредактируйте ~/.powconfig, чтобы он содержал export POW_WORKERS=1
  2. Перезапустите сам Pow, убив процесс Pow.

Теперь вы должны попадать в точку останова при каждом запросе.

person kranzky    schedule 06.03.2012

Обновление от сентября 2012

Я переключился на гем debugger — форк ruby-debug19 с лучшей поддержкой ruby ​​1.9.2/3.

Это также позволило упростить настройку удаленной отладки в development.rb. Я каждый раз попадаю в точку останова, и у меня нет зависающих процессов.

require 'debugger'
Debugger.start_remote

Исходный ответ

Попробуйте включить wait_connection (и перезапустить pow)

require 'ruby-debug'
Debugger.wait_connection = true
Debugger.start_remote
Debugger.settings[:autoeval] = true
puts "=> Debugger enabled"

Источник перезагрузки тоже хорош: Debugger.settings[:reload_source_on_change] = true

person jayeff    schedule 27.01.2012
comment
Debugger.wait_connection = true приведет к зависанию вашего процесса, так что будьте осторожны. - person PeppyHeppy; 11.04.2012
comment
Правда, я заметил, что некоторые запросы занимают вечность (т.е. 10-15 секунд), но, по крайней мере, это помогло каждый раз запускать отладчик. Это все еще нормально для меня, так как я все равно почти не использую его, а именно только тогда, когда код находится в обратном вызове, который указывает на URI *.dev. - person jayeff; 12.04.2012