2012-03-28 9 views
5

Cuando paso a paso a través del depurador de Ruby en Rails, ¿cómo sólo tengo que deje sólo al código que escribí, pasando por alto todo el código nativo de rieles?Rubí Depuración: Saltar Carriles Código

(es decir, sin esperar todo el código que se parece a esto)

/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} 

Gracias!

Respuesta

1

creo que lo que busca es algo así como this si entiendo su pregunta correcta. Usted querrá pasar por encima en lugar de entrar en, de esa manera si el uso de un método para raíles que no entra en el código rieles. Espero que esto ayude y buena suerte.

+0

Esto definitivamente es útil, pero no veo nada allí que me permita omitir todos los códigos de rieles nativos, excepto si pongo un punto de interrupción al principio de todo el código que escribo y esto ciertamente no es ideal. –

1

Si de vez en cuando dio un paso en algún código Rails, simplemente press c en una consola. Esto le pasar al siguiente punto de interrupción que haya establecido (o volver a la misma si está dentro de un bucle) o simplemente poner fin a solicitud de la página si no hay puntos de ruptura izquierda.

+0

.. Esto es lo que hago ahora, pero digo que si quieres seguir el tren de código desde un controlador de entrar en el código del modelo (digamos, al guardar un objeto o algo así). Deberá poner un punto de interrupción en su código de controlador y también en su código de modelo. ¿Hay alguna manera de que, si no sabía a dónde conducía el código (es decir, no sabía que el código del controlador llevaba al código del modelo), simplemente se detendría en el código del modelo, omitiendo todo el código de los rieles nativos? Es decir, "continúe hasta que llegue al código que escribí y luego al punto de interrupción allí". –

+0

@JonathanLeung Lo sentimos, ruby-debug no puede distinguir dónde comienza el código "nativo" y dónde termina :) Sería un código muy trivial para resolver ese problema. Si no has dicho a ruby-debug "Quiero parar aquí, aquí y aquí", pasará por toda la cadena de métodos hasta el final. –

+1

@NashBridges En realidad, se puede lograr permitiendo al usuario agregar una carpeta a una lista de archivos omitidos, por ejemplo, '~/rvm/gems/ruby.2.0.0-p247/gems'. No parece tan difícil y acepto que sería útil. – deivid

0

hay comandos 3 principales depuración

  • c - Continuar
  • s - Entra en
  • n - la próxima/Paso sobre

Lo que estamos buscando es "n ", le permite ir a través de una lista de métodos sin entrar en el código o ruby ​​gem que contiene el resto del código.

Cuestiones relacionadas