Posts en la categoría: Ruby on Rails

RVM, bundler y binstubs

Bundler tiene una opción maravillosa: --binstubs, que instala en el directorio de nuestra elección (por defecto ./bin) scripts que invocan los ejecutables de las gemas contenidas en el bundle, permitiendo invocar directamente dichos ejecutables sin recurrir a bundle exec. Si hacemos esto, lo más cómodo es añadir ./bin como primer elemento de nuestro PATH. Por desgracia, si usamos RVM esto no funciona. Dado su funcionamiento, RVM necesita ajustar el PATH cada vez que invocamos un rvm use. Nuestro gozo en un pozo.

.rvmrc al rescate

Los ficheros .rvmrc valen para mucho más que fijar la versión de ruby o el gemset que queremos usar en un proyecto concreto; son scripts de shell en toda regla. Podemos, por lo tanto, utilizarlos para modificar el PATH y dar prioridad a nuestro .bin, arreglando el problema.

rvm use ruby-1.9.2-p290
export PATH=./bin:$PATH

La alternativa: rbenv

Si esto os parece incómodo o sucio, siempre podéis utilizar rbenv en lugar de RVM. Yo he empezado a usarlo en casa y estoy bastante contento; en lo básico es muy parecido a RVM y es menos intrusivo con el shell.

pry-buffers 1.0.0

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

gem install pry-buffers

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!

SugarfreeConfig 2.0.0

La semana pasada publicamos la versión 2.0.0 de SugarfreeConfig, nuestra pequeña gema para acceder de manera sexy a valores de configuración almacenados en un fichero YAML.

Coincidiendo con el arranque de un par de proyectos Rails 3.1 hemos aprovechado para actualizar la gema: hemos modificado levemente el API para hacer SugarfreeConfig un poco más configurable y que se pueda usar fuera de Rails (eliminado la dependencia con ActiveSupport) y hemos cubierto todo el código con tests (utilizando specs de MiniTest para comparar su uso con RSpec, pero esa es otra historia).

Más detalles acerca de SugarfreeConfig en github: https://github.com/davidbarral/sugarfree-config.

Microsoft Office 2003 Professional Edition Adobe Creative Suite 2 Premium Macromedia Dreamweaver 8 [Mac] Microsoft Office Visio Professional 2007 Microsoft Windows XP Professional SP3 Adobe Flash Media Server 3.0 Adobe Font Folio 11 Microsoft Office 2008 [Mac] Adobe Acrobat 8 Professional [Mac] Adobe InDesign CS3 [Mac]