

En algunas ocasiones acabas haciendo que objetos llamen a propiedades de otros objetos. Por ejemplo:
objeto.otro_objeto.length
Y claro, como otro_objeto sea nil te enfrentas a una excepción. La primera opción que se te ocurre es con un bonito if:
if objeto.otro_objeto
objeto.otro_objeto.length
end
También, en modo locura-total se te podría ocurrir escribir algo así:
begin
objeto.otro_objeto.length
rescue
0
end
Pero en este último caso merecerías morir entre terribles sufrimientos.
Volviendo a la realidad, como quieres ser un buen rubista, descubres los if más molones:
objeto.otro_objeto.length if objeto.otro_objeto
Pero todavía se puede optimizar un poco más y dejar más claras las intenciones al usar try: Leer más
Un compañero que está mareando con el tema del envío de e-mails me he pasado un enlace de Sendgrid, nuestro proveedor para envío de newsletters y emails:
10 Tips to Keep Email Out of the Spam Folder
De las 10 reglas del artículo, la segunda es la que históricamente más impacto nos ha supuesto: Leer más
Hoy, leyendo un pull request en el repositorio de Verema he encontrado este trozo de código JavaScript:
jQuery(function($){ vector = $('.js_toggler'); vector.map(function() { $('#'+this.id).bind('mouseover', function() { $('#'+this.id+'_corto').toggle(); $('#'+this.id+'_largo').toggle(); }); $('#'+this.id).bind('mouseout', function() { $('#'+this.id+'_corto').toggle(); $('#'+this.id+'_largo').toggle(); }); }); });
Como he visto que tenía muchos aspectos por mejorar, me he puesto a redactar una lista por pasos de mejoras aplicables.
Al resto del equipo le ha gustado bastante esa lista y me han pedido que hiciera un post para el blog. ¿Y yo qué hago? Pues, copio el comentario de GitHub y lo pego aquí, a pelo, sin protección, living la vida loca. Leer más
Nota: Antes de nada, quiero que quede claro que, aunque pueda parecerlo, mi deseo no es exterminar los tests de integración.
A raíz de un artículo sobre mejorar el tiempo de carga de Rails y ciertos problemas que tenemos con nuestras aplicaciones (sobre todo por los entornos de test) me entraron ganas de probar la gema de Zeus.
Hice alguna prueba en casa y ahora también en la oficina y veo que va como un tiro. Incluso, es mejor que Spork ya que también “precarga” el entorno de desarrollo, pudiendo lanzar “rake -T” sin levantar nada de nuevo.
Aunque, como ha visto Edu, haciendo lo que dice el post anterior se pierde Guard y con éste la posibilidad de lanzar los tests al cambiar los ficheros en el editor. Pero como en Internet hay solución para todo (faltará probarlo), en http://blog.andywaite.com/2012/12/05/zeus-cucumber-guard/ explican cómo se puede poner todo junto. Leer más
Verema no estaba sacando correctamente uno de los partials que le tocaba. Corregirlo ha sido tan sencillo como rastrear desde donde se llamaba al partial. En este caso, se hacía con una función que localizaba el partial dependiendo del producto que se estaba mostrando.
def carpeta_subnav(clase)
txt = clase.to_s.downcase
clase == 'productor' ? 'catas/aceite' : clase == 'destileria' ? 'catas/licor' : clase == 'fabricante' ? 'catas/cerveza' : 'guias'
end
¿Problema? Que la variable que guarda en txt ya no se vuelve a utilizar. Estaba devolviendo siempre 'guias'
Cambiarlo era muy sencillo (reemplazar clase por txt) pero he pensado que sería mejor dejar algún test que nos evitara futuros problemas. Leer más
Aprovechando el break de este pomodoro, voy a a ver si me da tiempo a publicar estos enlaces que he encontrado:
El primer enlace es para los Observers y es que Rails ya viene preparado (habrá que buscar a partir de qué versión) con el patrón observador). Además de publicarlo aquí, espero que podamos verlo en el equipo todos juntos y empezar a probarlo, ya que hemos tenido recientemente varias conversaciones relacionadas con esto.
El segundo va a ser para la documentación de ActiveRecord::Base y es que creo que deberíamos visitarla más a menudo y aprender ciertos trucos. Al igual que hacemos con las clases String, Array y Hash de Ruby.
Vuelvo a enchufarme.
P.D. Perdón por las faltas, ya están corregidas. Leer más
ETFs, planes de pensiones, Bestinver, Carmignac, Robeco, Vanguard,...