2012-01-25 8 views
8

Sto provando a usare Ruby-Debug con Pow. Applicazione Rails 3.ruby-debug con Pow - i punti di interruzione non colpiscono mai

Ho fatto tutto qui: https://gist.github.com/1098830

ho riavviato il server e delle macchine più volte. Posso ottenere rdebug per la connessione:

→ rdebug -c 
Connected. 

ma non si ferma mai ai punti di interruzione.

Qualche idea su cosa potrebbe succedere? Ho ottenuto di colpire alcuni punti di interruzione poche ore fa, e non da allora.

regolatore

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

funziona senza pow? quale versione di ruby ​​stai usando? –

+0

sì, funziona sotto webrick e passeggero. ruby 1.9.2p290 – 99miles

risposta

2

Aggiornamento settembre '12

I passato alla gemma debugger - un fork di ruby-debug19 con un miglior supporto per ruby ​​1.9.2/3

Ciò ha permesso anche di semplificare la configurazione per il debug remoto in development.rb. Colpisco il punto di interruzione ogni volta e non ho processi pendenti.

require 'debugger' 
Debugger.start_remote 

risposta originale

Prova permettendo wait_connection (e riavviare pow)

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

fonte di ricarica è anche bello: Debugger.settings[:reload_source_on_change] = true

+2

"Debugger.wait_connection = true" interromperà il processo, quindi fai attenzione. – PeppyHeppy

+0

È vero, ho notato che alcune richieste sono "per sempre" (cioè 10-15 secondi), ma almeno ha fatto il trucco di colpire il debugger ogni volta. Va ancora bene per me visto che lo uso a malapena in ogni caso, vale a dire solo quando il codice vive in un callback che punta all'URI * .dev. – jayeff

8

Questo accade perché Pow gestisce due lavoratore proc come default, e rdebug si connette solo a uno di essi. Se l'altro processo serve la richiesta, allora nessun dado. La soluzione è quello di forzare Pow di eseguire un unico processo di lavoro, come segue:

  1. Modifica ~/.powconfig per contenere export POW_WORKERS=1
  2. Restart Pow sé uccidendo il processo Pow

Si dovrebbe ora colpisci il tuo punto di interruzione su ogni richiesta.

Problemi correlati