2012-01-25 5 views
8

Estoy tratando de usar ruby-debug con Pow. Aplicación Rails 3ruby-debug con Pow - puntos de interrupción nunca llegan a

he hecho todo aquí: https://gist.github.com/1098830

He reiniciado el servidor y la máquina varias veces. Puedo obtener rdebug para conectar: ​​

→ rdebug -c 
Connected. 

pero nunca se detiene en los puntos de interrupción.

¿Alguna idea de lo que podría estar pasando? Lo conseguí para golpear algunos puntos de ruptura hace unas horas, y no desde entonces.

controlador

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

¿funciona sin pow? ¿Qué versión de ruby ​​estás usando? –

+0

sí, funciona en webrick y pasajero. ruby 1.9.2p290 – 99miles

Respuesta

2

Actualización de septiembre '12

I cambió a la gema debugger - una horquilla de ruby-debug19 con mejor soporte para ruby ​​1.9.2/3

Esto también permitió simplificar la configuración para la depuración remota en development.rb. Llego al punto de interrupción cada vez y no tengo procesos pendientes.

require 'debugger' 
Debugger.start_remote 

respuesta original

Intente habilitar wait_connection (y reiniciar pow)

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

fuente de recarga es también muy agradable: Debugger.settings[:reload_source_on_change] = true

+2

"Debugger.wait_connection = true" cortará el proceso, así que tenga cuidado. – PeppyHeppy

+0

Es cierto que noté que algunas solicitudes toman "para siempre" (es decir, 10-15 segundos) pero al menos funcionaba el truco de presionar el depurador cada vez. Todavía está bien para mí ya que casi no lo uso de todos modos, es decir, solo cuando el código vive en una devolución de llamada que apunta al * .dev URI. – jayeff

8

Esto sucede porque Pow ejecuta dos proc de trabajador estes por defecto, y rdebug solo se conecta a uno de ellos. Si el otro proceso sirve la solicitud, entonces no hay dados. La solución es forzar Pow a ejecutar un solo proceso de trabajo, de la siguiente manera:

  1. Editar ~/.powconfig para contener export POW_WORKERS=1
  2. reiniciará Pow matando el proceso Pow

Ahora debe golpea tu punto de quiebre en cada solicitud.

Cuestiones relacionadas