Johan Tique
ProfesorManuel Alejandro González Cabello
Johan Tique
Profesor¿Cómo identificar el verdadero problema en el desarrollo de software?
Entender el problema real es crucial para el éxito en el desarrollo de software. Las tecnologías como Ruby y Rails ofrecen herramientas de debugging que facilitan este proceso. El debugging permite conocer el estado de una aplicación durante su ejecución, lo que es vital para identificar problemas y solucionarlos eficazmente.
¿Qué es Byebug y cómo se utiliza en Rails?
Byebug es una librería de debugging por defecto en Rails que permite poner "breakpoints" en el código. Estos breakpoints son puntos donde la ejecución del programa se pausa, permitiéndote interactuar con las variables y el estado actual del sistema.
Ubicación de Byebug: Se encuentra en el archivo Gemfile, generalmente en la línea 36. Esta herramienta es fundamental para detener el flujo del código y analizar las variables, constantes y parámetros.
Uso en el controlador: Puedes insertarlo en cualquier parte del controlador (por ejemplo, en la acción Index de BooksController) para pausar el programa.
byebug
Interacción: Al llegar a un breakpoint, usa la consola de comandos para explorar el estado del sistema. Puedes verificar el número de registros en la base de datos, modificar variables, e incluso cambiar su estado durante la ejecución.
Navegación: Para continuar la ejecución después de un breakpoint, se utiliza el comando continue o su alias c.
¿Cómo Pry mejora el debugging en proyectos Ruby on Rails?
Pry es una gema más madura que Byebug, diseñada para proporcionar un mayor control y reflexión sobre el código. Para aprovechar su potencial, se sigue un proceso de instalación y utilización específico.
Instalación de Pry:
Gemfile para incluir:
gem 'pry' gem 'pry-doc'
bundle install rails server
Uso de binding.pry: En lugar de usar byebug, utilizamos binding.pry para detener el código.
binding.pry
Potencial de reflexión: Una vez pausado el código en Pry, utiliza comandos como ls para listar métodos disponibles en una clase o first para obtener el primer registro de una base de datos:
ls Book
Exploración profunda: Pry permite inspeccionar meticulosamente los métodos y propiedades de objetos y clases activos, ofreciendo una ventaja en comparación con otras herramientas.
Recomendaciones finales sobre herramientas de debugging
Las herramientas de debugging como Byebug y Pry son esenciales para cualquier desarrollador que busque resolver problemas y mejorar el flujo de trabajo en desarrollo de software. Usa Byebug para una solución rápida y Pry para una inmersión más profunda y detallada en el comportamiento y estructura del código. ¡Integra estas herramientas en tu workflow y te será mucho más sencillo determinar y solucionar problemas en la próxima fase de desarrollo!
Esta guía es solo el inicio. Practica regularmente con ambas herramientas para mejorar tus habilidades y eficiencia al diagnosticar y arreglar problemas. Mantente curioso y no dejes de explorar y aprender. ¡Tu conocimiento y confianza en el desarrollo de software se incrementarán exponencialmente!
Johan Tique
ProfesorManuel Alejandro González Cabello
Johan Tique
ProfesorDaniel Morán
Eduardo Rafael Romero Bernal
David Campos
Lester Potestad Berovides
Carlos Esteban León Pinilla
Johan Tique
ProfesorCarlos Esteban León Pinilla
Esteban Ramos Fernández
Esteban Ramos Fernández
Victor Manuel Franco Cañon
Jorge Levy Cen Avila
Oscar Antonio Gil Escalante
Rodolfo Carmona
Juan Ramon Guzman Aguilar
Esteban Ramos Fernández
Nestor Jose Saad Gutierrez
Oscar Antonio Gil Escalante
Jose Ramos
Hola, he estado probando Ruby Jard denle una revisada seguro les va a gustar, tiene unas habilidades de reflexión, interacción, navegación y backtracing bien interesantes, entre otras porque el engine del REPL es pry, por otro lado les cuento que tiene una layout configurable de varios tipos de scren y colores, para los amantes de la consola es muy cómodo, por aquí les dejo el enlace Ruby JArd
Hola profesor. Espero esté bien,espero me pueda aclarar etsta duda. Quería probar la librería Ruby Jard la instale colocando la gema dentro del development test
group :development, :test do # Call 'byebug' anywhere in the code to stop execution and get a debugger console gem 'byebug', platforms: [:mri, :mingw, :x64_mingw] gem 'pry' gem 'pry-doc' gem 'ruby_jard' #Aqui esta la libredía end
Cuando utilizo el comando Jard me abre la consola de jard pero no puedo hacer nada. Uso Visual Code y en la terminal gitbash ya que uso windows. Saludos y gracias por sus clases.
Hola, una correcta forma de usar ese debugger es a través de este código en el gemfile
group :development, :test do gem 'byebug', platforms: %i[mri mingw x64_mingw] gem 'pry-rails' gem 'ruby_jard' end
el cual es muy similar a lo que tienes, no he probado su funcionamiento con entornos windows, pero te diría que probaras de la forma más simple, primero con un proyecto en ruby puro, y luego con un proyecto de rails, sólo dejando el ruby jard (igual este internamente usa byebug y pry)
group :development, :test do gem 'ruby_jard' end
Otra manera de hacer un debugging para algo rápido y sencillo es utilizar el comando
fail
Por ejemplo en el ‘show’ de un libro:
# GET /books/1 # GET /books/1.json def show fail end
fail corta la ejecución del código y nos lanza los detalles del request que estamos haciendo en nuestro navegador, muy útil para consultar por ejemplo los params que enviamos al controlador. También nos levanta un terminal para hacer consultas rápidas a la db
¿Ruby on Rails no tiene una función dd() así como Laravel? Para hacer debugging.
Rails instala por defecto un librería llamada byebug, esta librería es debugger por defecto que utiliza Ruby y Rails.
Para utilizarlo hay que colocar la palabra byebug en la parte del código en la que se quiera parar la grabación, esto es útil para interactuar con las variables, constantes o parámetros en ese momento y ver en que momento está fallando el código.
Para ver estos valores hay que ir a la terminal donde se está ejecutando el servidor, y se podrá observar dónde se paró la ejecución de la aplicación, y también podrás ver el valor de todas las variables, clases, métodos, etc. solo con poner el nombre y dar enter en la terminal.
Para seguir el flujo del código se ejecuta el comando continue, y esto terminará la ejecución del código.
Otra herramienta de debugging bastante conocida es pry, está gema es una librería de debugging para Ruby y Rails y es algo más madura que byebug.
Para utilizarla hay que instalar las gemas hay que agregar pry y pry-doc en el Gemfile y luego ejecutar el comando bundle install.
Una vez instalada, para comenzar a hacer debugging se utiliza binding.pry en el lugar donde se quiera parar la ejecución de la aplicación y de la misma forma en la terminal donde se está ejecutando el servidor podremos interactuar con las variables y métodos.
Actualmente del comando a utilizar ya no seria byebug sino debugger
Personalmente me gusta usar Awesome print en la consola interactiva de Rails. Me ayuda a leer mejor los objetos. Y cuando la uso con procesos de debbuging es mucho mejor. Recomendada!
Excelente opción para previsualizar mejor las estructuras de datos, yo solía usar las gemas jazz_hands y spirit_hands que agrupan una serie de librerias incluyendo ap sin embargo ahora estas gemas han quedado atrás (siguen siendo útiles) e incluso AwesomePrint tienen bastantes deprecation alerts, por lo que te recomiendo que le des una mirada a este proyecto https://github.com/amazing-print/amazing_print
Excelente Johan, la tendré muy encuenta.
otra forma también útil es usar en la parte del front la etiqueta pre y el método inspect de una variable para ver su contenido impreso en el html:
<pre> <%= @variable.inspect %> </pre>
o también anteponer debug:
<pre> <%= debug @variable %> </pre>
A estas 2 excelentes herramientas si les sumamos un log artesanal o la gema Logger, más los blockes rescue, sería el stack ideal para tener una excelente depuración ;)
Tienes los link a las gemas que comentas seria genial poder ubicarlas mas fácilmente.
creo esta es la gema de logger https://github.com/ruby/logger
si tienen por defecto la gem "debug" y no les detiene la ejecucion del server entonces usen, debugger. sin modificar la gem que viene por defecto "debug".
excelente, ya me resolvió varios problemas ;-)
Todo lo realizado hasta este punto lo pueden ver junto con un amplio resumen de cada capitulo en este repositorio
Buenísimo, no conocía pry, me recuerda a dd(); de laravel, aún busco algún debbuger para rails al estilo de dd de laravel :)
En mi trabajo usamos TDD, no sé usar bien estas gemas para los bugs, espero en próximas clases aprender más sobre esto :)
tambien para que sigan el camino del curso, teniendo "debug" lo sustituyen por "byebug" cierran el server luego colocan, bundle install. abren de nuevo el server y todo bien.
This byebug is really cool!