2012-01-25 2 views
8

Я пытаюсь использовать ruby-debug с Pow. Rails 3 приложение.ruby-debug with Pow - точки останова никогда не попадают

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

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

→ rdebug -c 
Connected. 

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

Любая идея, что может быть? Я получил это, чтобы ударить несколько точек останова несколько часов назад, и не с тех пор.

Контроллер

def index 
    debugger 
    ... 
    end 

Gemfile

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

development.rb

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

Работает ли оно без pow? какую версию рубина вы используете? –

+0

Да, это работает под webrick и пассажиром. ruby 1.9.2p290 – 99miles

ответ

2

Обновление сентябрь '12

Я переключился на жгут debugger - вилка ruby-debug19 с лучшей поддержкой для рубинов 1.9.2/3

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

require 'debugger' 
Debugger.start_remote 

Оригинал ответа

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

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

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

+2

«Debugger.wait_connection = true» приведет к зависанию вашего процесса, поэтому будьте осторожны. – PeppyHeppy

+0

Правда, я заметил, что некоторые запросы берутся «навсегда» (т. Е. 10-15 секунд), но, по крайней мере, это помогло ударить отладчика каждый раз. Это все равно для меня, поскольку я почти не использую его, а именно, только когда код живет в обратном вызове, который указывает на URI * .dev. – jayeff

8

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

  1. Редактировать ~/.powconfig содержать export POW_WORKERS=1
  2. перезагрузится Pow, убивая процесс Пау

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