Ayer, mientras Fuco y yo depurabamos una aplicación utilizando esa pequeña maravilla que es Pry, sentimos la necesidad de evaluar varios fragmentos de código. Para esto, Pry proporciona el comando “edit” que ofrece dos posibilidades: 1) utilizar fichero temporal (la opción -t) , o 2) indicar una ruta donde leer/escribir un fichero. En el primer caso no podemos reutilizar el contenido del fichero por lo que más nos vale no equivocarnos al teclear, y en el segundo nos vemos obligados a indicar dónde guardar los ficheros, lo que es tedioso si sólo pretendemos hacer algo temporal. No pasa nada, pry-buffers al rescate.
Con pry-buffers lo que queremos es juntar lo mejor de 1) y 2), permitiendo manejar buffers persistentes. Veamos cómo es una sesión pry con pry-buffers.
pry(main)> buf
... Aquí un rato con el vim (o con lo que uséis)...
This is de default buffer
pry(main)> buf -l
Available buffers: default
pry(main)> buf -s default
puts "This is the default buffer"
pry(main)> buf test
... Aquí otro rato más con el vim...
This is a test 2
pry(main)> buf -s test
Buffer test contents:
puts "This is a test #{1 + 1}"
pry(main)> buf -l
Available buffers: default, test
pry(main)> buf -d test
Buffer test cleaned
En resumen, podéis usar y gestionar tantos buffers como queráis y estos serán persistentes entre comandos (y entre sesiones Pry).
Para lograrlo hemos uttilizado el mecanismo de extensión de Pry, que permite definir nuevos comandos a través del fichero de configuración de pry ($HOME/.pryrc) o mediante plugins (como pry-doc o pry-remote). Nosotros hemos optado por la segunda opción. Si os apetece probarlo instalad la gema
Y si tenéis curiosidad, el código fuente está en github.
Esta es una gema para uso interno (vamos, para que Fuco sea feliz) pero esperamos que os resulte útil a alguno.
Happy Prying!