Algunos Tips para el Desarrollo en Rails
Septiembre 15, 2008
Como continuación de las ayuda-memoria, y ahora entrando firmemente en el desarrollo de experienciaSD, voy a dejar algunos tips para desarrollo orientadas a acelerar el perfomance de una aplicación, o derechamente mejorar la velocidad del sistema.
En relación al estilo de escribir código
- Evitar el uso excesivo de helpers, ya que agregarlos es sinónimo de sobrecarga;
- Considerar el uso de memcached para guardar en la memoria cache los resultados que arroje el calculo de algún modelo o librería;
- Usa un archivo de configuración propio para guardar contraseñas o claves API en vez de usar el repositorio subversion para almacenarlas. Usar YAMN y copiar el mismo estilo de database.yml
- Usar constantes cuando sea necesario. En vez de repetir cadenas, como la dirección de un cliente, es mejor definirla de una vez como constante (en enviroment.rb, o en el archivo de ambiente apropiado) y usarla a través de toda la aplicación.
- Ser cuidadoso con los campos binarios. Por defecto, en una consulta se devuelven todos los campos, incluyendo el contenido completo de un campo binario. Usar :select para devolver los campos que se necesitan.
- Evitar controladores gigantescos. En vez de acumular acciones en un controlador, limitarse a 10 acciones por controlador puede ser una buena receta, de otra manera, mejor replantearse el diseño.
- Mantener controladores y vistas lo menos recargados. La mayoría del código debería estar en el modelo, no en los controladores o las vistas.
- No guardar objetos en la sesión. Si es necesario, mejor usar un entero, o una cadena corta, y entonces sacar el objeto apropiado desde la base de datos mientras dure la solicitud.
- Usar ar_mailer para la cola de mensajes en vez de enviarlos durante el ciclo de respuesta.
- Monitorear los servicios con el plugin exception_notification, munin, monit, u otra herramienta.
- Minimizar la dependencia en relación a los graficos. Si la aplicación solo necesita unos pocos thumbnails, no se justifica gastar memoria importando grandes librerias gráficas. Hay que hecharle un vistaso a mini-magick, o imagescience para hacer liviana estas tareas.
- Evitar la repitición excesiva de partials pequeños.
- Usar CSS en vez de inline tags para aplicar diseño selectivo.
- Usar attr_protected :fieldname en el modelo para proteger los campos de la base de datos de ser manipulados desde un formulario, o desde cualquier otra llamada a Model.update_attributes(params[:model])).
- Usar las clases de Ruby y su anidación para rehacer el código repetido en un controlador
- Usar técnicas de no intrusivas de Javascript para separar comportamiento de lenguaje de marcas.
- Empaquetar las clases autosuficientes en plugins o RubyGems.
- Guardar en el cache los datos accesados y el contenido entregado frecuentemente, en la medida de lo posible.
- Rotar los archivos log de Rails y Mongrel usando el demonio logrotate en Linux.
- Automatizar la materialización y la mantención con Capistriano o Vlad.
- Hacer métodos cortos. Si un método tiene más de 10 líneas de código, entonces hay que rehacerlo.
- Correr flog para determinar métodos y clases demasiado complejas.
- Hacerse amigo de los plugins más populares. En vez de reinventar la rueda, mejor ahorrarse tiempo, usando estos archi-probados y populares plugins.









