2012-03-28 17 views
5

Quando si passa attraverso Ruby Debugger in Rails, come faccio a fermarmi solo al codice che ho scritto, saltando su tutto il codice Rails nativo?Ruby Debug: Skip Rails Codice

(cioè saltare tutto il codice che assomiglia a questo)

/Users/jon/.rvm/gems/ruby-1.9.3-p0/gems/activesupport-3.2.1/lib/active_support/core_ext/module/remove_method.rb:4 
remove_method(method) 
(rdb:1) s 
[76, 85] in /Users/jon/.rvm/gems/ruby-1.9.3-p0/gems/activesupport-3.2.1/lib/active_support/core_ext/class/attribute.rb 
    76   def self.#{name}?() !!#{name} end 
    77 
    78   def self.#{name}=(val) 
    79   singleton_class.class_eval do 
    80    remove_possible_method(:#{name}) 
=> 81    define_method(:#{name}) { val } 
    82   end 
    83 
    84   if singleton_class? 
    85    class_eval do 
/Users/jon/.rvm/gems/ruby-1.9.3-p0/gems/activesupport-3.2.1/lib/active_support/core_ext/class/attribute.rb:81 
define_method(:#{name}) { val } 
(rdb:1) s 
[79, 88] in /Users/jon/.rvm/gems/ruby-1.9.3-p0/gems/activesupport-3.2.1/lib/active_support/core_ext/class/attribute.rb 
    79   singleton_class.class_eval do 
    80    remove_possible_method(:#{name}) 
    81    define_method(:#{name}) { val } 
    82   end 
    83 
=> 84   if singleton_class? 
    85    class_eval do 
    86    remove_possible_method(:#{name}) 
    87    def #{name} 
    88     defined?(@#{name}) ? @#{name} : singleton_class.#{name} 

Grazie!

risposta

1

Penso che la tua ricerca sia qualcosa come this se ho capito bene la tua domanda. Avrai voglia di scavalcare piuttosto che entrare, in questo modo se usi un metodo per le rotaie non entri nel codice delle rotaie. Spero che questo aiuti e buona fortuna.

+0

Questo è sicuramente utile ma non vedo nulla di lì che mi permetta di saltare tutto il codice di binari nativi tranne se metto un punto di interruzione all'inizio di tutto il codice che scrivo e questo non è certamente l'ideale. .. –

1

Se occasionalmente si è entrati in qualche codice Rails, solo press c in una console. Questo ti sposterà al prossimo breakpoint che hai impostato (o tornerai alla stessa se sei all'interno di un loop) o semplicemente terminerà la richiesta di pagina se non ci sono più breakpoint.

+0

Questo è quello che faccio adesso, ma diciamo se vuoi seguire il treno di codice da un controller che entra nel codice del modello (ad esempio quando salvi un oggetto o qualcosa del genere). Dovrai inserire un punto di interruzione nel codice del controller e anche nel codice del modello. C'è un modo, se non sapessi dove il codice ha portato (cioè non sapevi che il codice del controller ha portato al codice del modello), si fermerebbe semplicemente nel codice del modello, saltando tutto il codice delle guide native? Cioè "continua fino a quando non trova il codice che ho scritto e poi lo interrompi". –

+0

@JonathanLeung Spiacente, ruby-debug non può distinguere dove inizia il codice "nativo" e dove finisce :) Sarebbe un codice molto banale per risolvere questo problema. Se non hai detto al ruby-debug "Voglio fermarmi qui, qui e qui", passerà attraverso tutta la catena di metodi fino alla fine. –

+1

@NashBridges In realtà potrebbe essere ottenuto abilitando l'utente ad aggiungere una cartella a un elenco di file saltati, ad esempio, ~ ~/rvm/gems/ruby.2.0.0-p247/gems'. Non sembra così difficile e sono d'accordo che sarebbe utile. – deivid

0

ci sono comandi 3 principali debug

  • c - Continua
  • s - Passo in
  • n - successivo/Passaggio sopra

Quello che stai cercando è "n ", ti consente di esaminare un elenco di metodi senza entrare nel codice o nella gemma rubino che contiene il resto del codice.