Cosa usate per il debug in Ruby 1.9? rdebug non sembra essere compatibile .. c'è qualcosa là fuori?
Risposte:
Nota: questa risposta era corretta ma ora non è aggiornata. Vedi la risposta corretta di seguito. TL; DR: usa "debugger" adesso.
ruby-debug è ora disponibile con Ruby 1.9.x. Vedi http://www.github.com/mark-moseley
Per installare (usando gem sull'installazione 1.9 Ruby):
gem install ruby-debug19
(con forse il necessario "sudo" di fronte).
ruby-debug19
non viene più mantenuto. Tutte le altre risposte sono obsolete.
Ma c'è un'alternativa:
debugger
Al salvataggio!
Metti questo nel tuo Gemfile
:
gem 'debugger', group: [:development, :test]
Funziona e basta. - Ed è incluso nei binari Gemfile dalla 3.2 ruby-debug19
. Qualcosa da sostituire . Ha la stessa identica funzionalità e viene mantenuto attivamente.
group :development do ... end
o simili), perché contiene già un gruppo.
AGGIORNAMENTO PER RUBY 2.0+ e SEGUENTI
byebug è il debugger attualmente consigliato per Ruby 2.0+
Questo problema è stato documentato qui , e cldwalker, l'autore del debugger, nota che il debugger avrà come ambito Ruby 1.9.2 e 1.9.3.
AGGIORNAMENTO 2
È vero che ruby-debug non viene mantenuto attivamente anche se non riesco a trovare da nessuna parte che non sia più mantenuto.
Puoi usare la nuova gemma del debugger se hai bisogno di aiuto per iniziare con la nuova gemma che puoi vedere lanciare le rotaie di Ryan Bates .
Nel tuo Gemfile inserisci:
gem 'debugger', group: [:development, :test]
È quindi possibile aggiungere un punto di interruzione in qualsiasi punto del codice utilizzando la debugger
parola chiave.
PUOI ANCORA USARE
linecache19 e ruby-debug-base19 con:
bash <<(curl -L https://raw.github.com/gist/1333785 )
VECCHIE RISPOSTE
Solo un'aggiunta su questo con rvm, ruby 1.9.1-p378. La storia vera è che anche se ruby-debug è 1.9.x pronto, linecache-0.43 non lo è. La soluzione è installare:
gem install ruby-debug19
Questo risolve il problema per me.
VECCHIO AGGIORNAMENTO
Se hai problemi con ruby 1.9.2 e il debugging di Rails 3:
gem 'ruby-debug-base19', "0.11.24"
gem 'ruby-debug19', "0.11.6"
Nel tuo Gemfile e facendo un file
bundle install
Ti renderà di nuovo un debugger felice.
Alcune cose che potresti provare
1) eseguilo con il normale debugger di ruby -rdebug [1] piuttosto lento
2) eseguilo con unroller gem [tipo di puzza, molto lento]
3) usa molte dichiarazioni di stampa velocemente, un po 'meno introspezione possibile
4) passare a un prompt irb ed eseguire del codice da lì.
è possibile elencare il codice creando il proprio "prompt di irb" che elenca il codice attorno a se stesso [utilizzare il chiamante per scoprire dove si trova], quindi passare a un normale prompt di irb.
5) forse jruby in modalità 1.9 compat ha un debugger?
Se hai ancora problemi dopo l'installazione di ruby-debug19 prova ad aggiornare ruby-debug-base19. Ho riscontrato errori e non ho potuto eseguire WEBrick in modalità di debug fino a quando non l'ho fatto.
gem update ruby-debug-base19
Oh, e grazie Mr. Moseley per tutto il tuo duro lavoro!
Vedi la mia risposta qui: Ruby-debug non funziona - Stack Overflow
Si tratta di far funzionare il debug di Ruby con la seguente configurazione
Usando rvm, nella directory di lavoro del mio progetto ho un .rvmrc che afferma:
rvm use ruby-1.9.3-p0@mygemset
Spero che aiuti!
- Freddy
Ho usato quanto segue e funziona benissimo per me:
gem "debugger", gruppo: [: sviluppo,: test]
ruby 1.9.3p194 (2012-04-20 revisione 35410) [x86_64-linux] rails 3.2.8
Netbeans è un buon IDE per RoR. Buon debugger anche.
La versione ruby 1.9.1-p243 è disponibile e anche il compitable ruby-debug-ide funziona correttamente. Installa ruby-debug-ide usando il seguente comando:
gem installa ruby-debug-ide
Questo installerà le gemme ruby-debug-base19 e ruby-debug-ide. Ma prima assicurati di installare il mingw con successo seguendo i documenti del kit di sviluppo disponibili da RubyForge .
Le ultime funzionalità sono disponibili in ruby-debug-ide19 gem.
C'è molta scelta, a seconda delle tue esigenze.
Uso i movimenti di leva perché posso "guardare indietro" a ciò che è accaduto all'interno del comando precedente rieseguendoli in modalità di debug direttamente dal posto.
nessuno usa: ruby -rdebug script.rb
quindi puoi usare: b script.rb: ## (dove ## è il numero di riga di un comando ruby valido) altrimenti potresti trovarti nel mezzo di rubygems o di uno dei blocchi di codice richiesti.
Quindi puoi semplicemente impostare il punto di interruzione successivo come b: ##
ruby-debug19
non è aggiornato ora.