Bezdepbonusu7Программирование: статьи и ответы

Вопрос

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

Автор вопроса: 99milesОтветов: 2

Я пытаюсь использовать 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
  • работает без паута? какую версию рубина вы используете? Nicolas Garnil 25.01.2012
  • да, работает под вебриком и пассажиром. рубин 1.9.2p290 99miles 25.01.2012

ruby-on-railsruby-on-rails-3ruby-debugrack-pow

Ответы

Ответ 1 · рейтинг 8 · kranzky

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

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

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

Ответ 2 · рейтинг 2 · jayeff

Обновление от сентября 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

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы