Acabo de publicar en el blog de negonation el post "Gestión de eventos en Rails: Observers".
Si quieres saber cómo están programados los observers de Rails, échale un ojo.
Espero que a alguien le resulte interesante... :)
Acabo de publicar en el blog de negonation el post "Gestión de eventos en Rails: Observers".
Si quieres saber cómo están programados los observers de Rails, échale un ojo.
Espero que a alguien le resulte interesante... :)
Los días 22 y 23 de Noviembre estaré en Madrid por la Conferncia Rails 2007. Tengo planeado dar un par de charlas en el evento:
Con tal de centrar las charlas en lo interesante me gustaría pediros que me comentéis aquellos temas que os gustaría tratar o sobre los que sintáis curiosidad
Agradezco cualquier comentario o sugerencia, incluso si no vas a asistir a las charlas ^_^
Hola a todos,
Los últimos meses están siendo muy intensos con el trabajo, finiquitando el papeleo de la carrera y recuperando mi vida social tras mi vuelta de Helsinki :)
En un intento por retomar esto, voy a hacer un pequeño resumen de lo acontecido en este mes y medio que llevo desaparecido.
Tal y como estaba planeado fui al HackDay. Allí tuve la oportunidad de conocer en persona a gente que sólo conocía con el monitor de por medio: Luismi y Blat. Además conocí a un montón de gente interesante y simpática (no hago una lista para evitar dejarme a nadie fuera xD). Un auténtico placer estar con todos ellos compartiendo el fin de semana.
Por si a alguno le interesa lo que hackeamos allí, Luismi y yo montamos Flickr Captcha: Un sistema de captchas basado en imágenes obtenidas a través de la API de flickr. No descarto escribir un post hablando más de la idea y la implementación, pero no sé si le interesará a alguien xDD
Tengo un pequeño set de flickr del HackDay, por si queréis ver alguna fotillo :)
EXTRACTO DEL EXPEDIENTE ACADÉMICO A FECHA 20/07/2007
Proyecto Final de carrera superado el: 19/07/07
Calificación: 9Créditos establecidos para obtener la titulación:
TRONCAL: 120.00
OBLIG.: 48.00
OPT.: 34.50
L.E.: 22.50
TOTAL: 225.00Créditos obtenidos:
TRONCAL: 120.00
OBLIG.: 48.00
OPT.: 34.50
L.E.: 22.50
TOTAL: 225.00NOTA MEDIA PONDERADA: 7,87
Ya tengo oficialmente todos los créditos de la carrera y el lunes me paso por la UPV a pagar el título de Ingeniero Técnico en Informática de Sistemas :D
Desde hace unas semanas tengo un VPS de Slicehost. Dreamhost está bien para tener un servidor baúl: mucho espacio, mucho bandwith y un uptime aceptable . Pero estaba un poco cansado del suplicio que era poner una aplicación rails y lo mal que iban, así que contraté slicehost para probarlo y definitivamente me quedo :)
Si os echa para atrás el tema de administrar una distribución linux recién instalada y tener que montar todo el stack, deciros que existe deprec. Deprec proporciona un conjunto de recetas de capistrano con las que podrás convertir una ubuntu recién instalada en un servidor con: apache 2, cluster de mongrels, mysql, subversion e incluso un trac... con 10 comandos de terminal!. Si te parece poco te diré que con esos menos de 10 comandos también habrá configurado todos los servidores, importado tu aplicación rails en subversion, desplegado la aplicación, configurado los vhosts de apache...
Si pensáis que debe ser un lío, aquí tenéis lo que escribiréis en la terminal de vuestra máquina local:
deprec --apply-to . --name flickrcaptcha --domain captcha.ernesto-jimenez.com
cap setup_admin_account_as_root
cap setup_ssh_keys
cap install_rails_stack svn_install trac_install
cap svn_setup
cap trac_setup
cap trac_start
cap deprec_setup
cap deploy_with_migrations
cap restart_apache
¿complicado? ^_^
Podéis ver un HowTo muy bueno en el wiki de slicehost
El lunes voy a la Campus Party una semanita. De momento es seguro que participaré en los talleres y conferencias de Google y ua competición de programación rápida de RIAs en 72 horas en la que participaré con Belén.
Eso es todo por hoy, a ver si logro publicar con algo más de frecuencia en el blog y no lo dejo abandonado tanto tiempo :)
Happy Hacking!
Bueno, como me hizo gracia el comentario de Blat sobre publicar un plugin por semana aquí viene el de esta. Esta vez no es para RoR exactamente, sino para una aplicación hecha en RoR: CruiseControl.rb :)
El plugin este ya lo tenía hecho, pero como estoy de exámenes mejor recuperar algo ya hecho y hacer un post rápido que no postear ^_^
Traduciendo directamente de su página:
CruiseContro.rb es una herramienta de integración continua. Su básico propósito en la vida es alertar a los miembros de un proyecto de software cuando uno de ellos añade algo al sistema de control de versiones que rompe el build.
CC.rb es fácil de instalar, agradable de usar y simple de hackear. Está esrita en Ruby.
Básicamente, lo que hace es monitorizar subversion y cuando hay una nueva versión le pasa los test y alerta a los desarrolladores si los tests no pasan correctamente. Yo diría que es una herramienta obligatoria para cualquier proyecto en Rails (cocteleros de la ruby room, si no lo tenéis, ya estáis tardando ^_^)
Por defecto CC.rb ya lleva (entre otros) plugins de notificación via: mail, jabber y Growl.
Yo hice uno para notificar via twitter cuando el build se rompe o arregla. Lo podéis encontrar en el bug tracker del proyecto ya que está pendiente de ver si lo incorporan de serie como plugin disponible.
Podéis encontrar otra versión posterior que notifica de todas las nuevas versiones en mi subversion. Con esto os enteraréis de todos los commits que se hagan y de si los tests pasan correctamente.
Para instalarlo no tenéis más que copiar el plugin en la carpeta builder_plugins/installed/ de vuestra instalación de CC.rb
La configuración es algo tan sencillo como esto:
Project.configure do |project|
...
project.twitter_notifier.email = 'your_email@twitter.com'
project.twitter_notifier.password = 'twitter_password'
...
end
Cuando ideamos el modelo de nuestra aplicación pensamos qué datos queremos y qué forma han de tener, por eso Rails proporciona validates_format_of y compañía. Yo en ocasiones sé que determinados campos de texto no han de admitir etiquetas HTML, mucha gente con este tipo de campos guardaría el texto independientemente de si tiene etiquetas HTML, y luego quitaría las etiquetas en las vistas.
Desde mi punto de vista, lo ideal es quitar las etiquetas antes de guardar los datos en la base de datos, así que he hecho este mini-plugin que te permite definir campos de texto simple (sin etiquetas HTML), y modificará el modelo para usar el helper strip_tags sobre esos campos.
Este plugin también se usa con dos simples pasos:
class Post < ActiveRecord::Base
validates_presence_of :title
simple_text_fields :only => :title
end
Al igual que acts_without_scripts, simple_text_fields por defecto se aplica a todos los campos de texto del modelo, pero dispones de :only y :except para restringir su aplicación.
Para demostrar que sigo vivo, aquí va la presentación de dos plugins para Rails míos :)
test_fixtures no es más que un plugin sacado a partir del post "Fernando Blat lo decía: TESTEA TUS FIXTURES! (y se DRY)". Instala el plugin, añade una línea a tu test/test_helpers.rb, y ya lo tendrás todo hecho
Ya no tienes excusa para no testear tus fixtures
Para usarlo son sólo dos pasos:
class Test::Unit::TestCase
include TestFixtures
# The rest of your helpers
end
¿Controlas lo que los usuarios meten en tu base de datos? ¿Te aseguras de quitar javascript del contenido que envían? No son cosas que se hayan de descuidar ya que si no lo haces puedes comprometer la privacidad e incluso la seguridad de tus otros usuarios y tu web.
Siguiendo con mi obsesión por ser DRY y basándome en la idea del plugin acts_naked he creado acts_without_scripts. Este plugin te permite filtrar con el helper sanitize el texto que va a tu base de datos automáticamente. Por defecto filtrará todos los campos de texto del modelo que declaremos acts_without_scripts, pero dispone de opciones para especificar qué campos en concreto queremos filtrar y el callback que queremos emplear para filtrarlos.
Ya puedes asegurar un poco más tu aplicación!
Para usarlo son otros dos pasos:
class Post < ActiveRecord::Base
validates_presence_of :title
acts_without_scripts
end
Para esto te basta con dejarme un comentario o enviarme un mail ;)
Espero que algo de esto le sea útil a alguien ^_^
Jaime Iniesta me ha comentado esta tarde que ya han publicado los vídeos de las ponencias que se grabaron en la conferencia del pasado año. Hay conferencias muy interesantes, en cuanto tenga un rato me veo la de Fernando Blat (al que ya tengo el placer de conocer ;D)
Al que le puedan interesar, puede ver y descargar los vídeos de: http://2006.conferenciarails.org/
Hablando de conferencias. ¿Alguno está pensando en ir a la RailsConf Europe?