Tabla de contenidos
Rails console
Para entrar a la consola, puedes entrar con rails console o con la abreviación
rails c.
Pro tip: para salir de la consola de Rails, puedes presionar
ctrl+den vez de escribirexit
Para debuggear tests puede ser muy util examinar ese ambiente con
rails console test. Puede ser útil también cuando solo tienes gemas
disponibles en el ambiente de test.
Sandbox console
Existe un modo de la consola de Rails que nos permite jugar con los datos y modelos todo lo que queramos pero que al cerrar la sesión no se guarden los datos. Esto puede ser súper útil si estás en modo adrenalina y quieres debugger directo en producción. ☠
rails c --sandboxBúsqueda
Si recuerdas que en algún momento hiciste una consulta dentro de la consola,
pero no puedes recordar bien, puedes usar reverse search presionando ctrl+r
Reiniciar consola
Si realizas cambios en el código, por ejemplo, en algun modelo y quieres probar
tus cambios, entonces debes ejecutar reload! en la consola para que tus
cambios tomen efecto.
Pero, cuidado! Si ya tienes variables asignadas en tu sesión activa de la consola, entonces estas instancias no tendrán el código actualizado. Para actualizarlas tendrás que reasignarlas.
Usando Pry
Pry es una gema que nos permite tener acceso a una consola interactiva con mejores funcionalidades que IRB.
Instalación
gem 'pry', '~> 0.13.1'Como debugger
En tu código .rb puedes agregar lo siguiente:
require 'pry'; binding.pryEsto detendrá la ejecución de un programa y te permitirá interactuar con las variables del entorno.
En VSCode se puede agregar un keyboard shortcut para agregar esta línea rápidamente:
{
"Bind Pry": {
"prefix": "pry",
"body": ["require 'pry'; binding.pry"],
"description": "Adds a pry binding for debugging"
}
}También puedes hacer esto mismo en las vistas e inspeccionar las variables de ese scope con:
# some/view.html.erb
<%= binding.pry %>Show-source
Además, con el comando show-source se puede ver el código fuente de ciertas
clases, objecto, métodos, etc. Especialmente útil cuando estamos debuggeando que
no hemos escrito nosotros, como el de compañeros de trabajo o incluso el código
de librerías.
Si el método tiene una llamada a super, puedes ver la definición en la
superclase conshow-source pokemon.attack -s agregando un -s por cada vez que
quieras ver la superclase (puedes ver la definición en la superclase de la
superclase con show-source pokemon.attack -ss)
Métodos especiales
_retorna la última expresión evaluada en la consola.apptiene una referencia a la aplicación Rails. Así puedes hacer cosas comoapp.get(app.root_path))helperprovee acceso a los helpers de vistas.
Pry-rails
Esta gema es la adaptación de pry para
tener aún más funcionalidades, pero esta vez específicas de Rails. Ten en cuenta
que al instalar esta gema, la consola interactiva que se ejecutaba con rails c
será reemplazada por una instancia de pry
group :development, :test do
gem "pry-rails"
endCon esta gema, ahora podrás usar los comandos de pry como show-sourcedentro
de rails c
Show-routes
Este comando nos listará todas las rutas disponibles en nuestra aplicación. Es
particularmente útil con la opción --grep nombre-de-ruta-a-filtrar
show-routes --grep pokemonEsta ejecución nos retornaría todas las rutas que contengan el nombre pokemon
en su información (path, nombre, controlador, etc)
Pry-debug
Si estás trabajando en un proyecto antiguo (Ruby < 2.0) entonces una buena opción es pry-debugger. Si no, entonces te recomiendo pry-byebug. Estas gemas son bastante similares, pero la última tiene más y mejores funcionalidades.
VSCode Debugging
Esta es mi opción preferida, ya que puedo utilizar los mismos shortcuts de VSCode y ver la información de la misma manera que depuro en otros lenguajes y frameworks.
Para ello, primero hay que instalar algunas gemas y configurar el archivo
launch.json
Lo mejor es seguir esta receta, ya que contiene los pasos súper bien explicados.