2010-09-14 9 views
6

¿Hay una buena manera de ejecutar un script y ver todos los pasos:¿Trazar el código en Ruby?

  • el que se ejecuta el código
  • qué archivo el código está en
  • lo que devuelve
  • Los mensajes de error

Esta sería una buena manera de aprender cómo funciona un proyecto de código abierto.

¿No hay soluciones como esta para Ruby?

Por ejemplo.

require "httparty" 
HTTParty.get "http://www.google.se" 

Entonces sería ejecutar el código y me muestran todo el código que está ejecutando, en el que el archivo y la línea, volvieron objetos, mensajes de error, etc.

Respuesta

5

trazador podría hacerlo por usted http://en.wikibooks.org/wiki/Ruby_Programming/Standard_Library/Tracer

si desea ver apenas excepciones planteadas, a continuación, ejecutar el rubí -d (o utilizar rubí de depuración y de excepción "captura")

+0

Estoy usando Ruby 1.9.2. ¿Por qué no hay interruptor de carrera cuando ejecuto "ruby --help"? Y cuando ejecuto "ruby -rtracer my_ruby_file.rb" se imprime como siempre, no veo ninguna funcionalidad de rastreo. –

+0

@never_had_a_name, no está en '--help' porque lo * * documentado es' -rlibrary'; 'tracer' simplemente resulta ser una de las bibliotecas disponibles. Documentar cada biblioteca disponible sería una tarea interminable. (Todas las bibliotecas integradas pueden cargarse de esta manera, pero aún no se diferencian del uso de la línea de comandos). –

0

utilizar un depurador? ruby viene con uno incorporado, o usa ruby-debug

+0

¿Un depurador como Ruby- depurar hacer lo que necesito? Por favor, lea mi publicación actualizada. –

+1

Esto es realmente un comentario, no una respuesta a la pregunta. Utilice "agregar comentario" para dejar comentarios al autor. –

+0

@RostyslavDzinko No estoy de acuerdo. – horseyguy

0

Puedes generar una excepción, atraparla y luego usar el método de rastreo de un objeto de excepción.

+0

No soy el tipo que codificó la biblioteca. Leer mi publicación actualizada –

2

Hay Kernel#set_trace_func que en su mayoría cubre lo que necesita:

proc tarda hasta seis parámetros: un nombre evento, un nombre de archivo, el número de línea, un ID de objeto, una unión, y el nombre de una clase. proc se invoca cuando se produce un evento .

No estoy seguro, sin embargo, ¿qué quiere decir con "los mensajes de error". Si se refiere a excepciones, si no las maneja en su código, su código terminará con la excepción impresa.

+0

Leer mi publicación actualizada –