Inicialización no estandar de objetos ActiveRecord

Escrito por nelson Wed, 07 May 2008 18:21:00 GMT

Me estuve peleando con un modelo de ActiveRecord, porque tenía que manejar ciertos estados internos del modelo que no están en campos de la base de datos, sinó que son datos calculados cuando se carga un registro de la base de datos.

El primer intento lo hice haciendo una sobre escritura del método initialize de ActiveRecord pero muy pronto me di cuenta de que no funcionaba cuando se buscaba por un objeto con algún método find.

Luego de hacer muchas pruebas y que ninguna funcionara, terminé mirando la implementación de ActiveRecord a ver si encontraba alguna pista y si, ahí estaba.

Cuando se utiliza algún método de búsqueda, los objetos se instancian con un método llamado ‘instantiate’ y al finalizar se llama a dos callbacks si existen en la clase del modelo, que son :after_find y :after_initialize

Así que todo lo que tuve que hacer fue; mover el código de cálculo de estado del modelo a un método llamado ‘after_initialize’, y ahora anda todo perfecto !

CodeAR como grupo en Sonico

Escrito por nelson Wed, 26 Mar 2008 15:31:00 GMT

Creamos también el grupo de CodeAR en la red Sónico.

Están todos invitados también los que anden por ahí !

CodeAR como grupo en Facebook

Escrito por nelson Tue, 25 Mar 2008 02:48:00 GMT

Se a creado el grupo CodeAR en Facebook, para integrarlo solo deben agregarse al mismo, es totalmente abierto.

A todos los interesados en participal también por ese medio están invitados !

Compartiendo algunos scripts

Escrito por nelson Mon, 28 Jan 2008 23:47:00 GMT

Seguramente la pereza es la madre de muchos de esos pequeños scripts que uno va haciendo para tratar de evitar todas las tareas repetitivas diarias. Acá dejo algunos de mi autoría y algunos que saque alguna vez de internet pero que lametablemente no tomé nota de donde o quien eran :(....

Muchas veces conectado remotamente a un servidor necesito acceder a la base mysql del proyecto RoR activo y es un dolor de culo tener que mirar el database.yml para ver las credenciales y luego escribir la línea a mano para conectarse, para evitar eso, escribí esto:

#! /usr/bin/ruby
require 'yaml'

puts ARGV[0]
case ARGV[0]
when 'd' then env = 'development'
when 'p' then env = 'production'
when 't' then env = 'test'
else
  env = 'development'
end

config = YAML::load_file('config/database.yml')[env]

puts "mysql -u#{config['username']} -p#{config['password']} #{config['database']}" 
system("mysql -u#{config['username']} -p#{config['password']} #{config['database']}")
de esta manera estando parado sobre el directorio raiz del proyecto se puede hacer
 rmy
y se conecta por defecto a desarrollo o
rmy p
y nos conectamos a producción…

Otro… ahora que la última versión de RoR incorporó la tarea de poder ver las rutas con

rake route
esta bueno, pero es otro dolor de culo tener que buscar una ruta y escribir
rake route | grep usuarios
para filtrar la vista… para eso ésta función en bash

rro () 
{ 
    rake routes | grep --color=auto $1
}

ahora solo hay que hacer

rro usuarios

y como plus se tiene el texto buscado resaltado en color ;).. una joyita….

Otra función bash que uso mucho basado en la misma idea es la de búsqueda en el history del bash

function hf()
{
  history | grep --color=auto $1

}
y esto para que ??.. aveces hay comandos largos con parámetros que repetirlos es tedioso, para evitar eso primero buscamos en el history
hf mysql
para obtener todos los comandos en el history que tenga el texto mysql y a la izquierda hay un número con la posición en el buffer, con ese número luego hacemos
!128
y se ejecuta esa entrada en el history ;)

Para terminar les dejo mi pequeño archivo de bash que cargo cada vez que abro una consola

alias l='ls -lah' 
alias h='history'
alias c='clear'
alias ..='cd ..'
alias ...='cd ../..'
alias grep='grep --color=auto'

set -o vi

function hf()
{
  history | grep $1
}

function sf()
{
  svn st | grep \? | sed '/images\/[0-9]\+$/d' | sed '/\.swp/d'
}

function rro()
{
  rake routes | grep $1
}
como cargo este archivo ??... al final de .bashrc tengo:
. ~/bin/bash_alias

bash_alias es el nombre de mi archivo

Espero que a alguien le interese y le sirva!.

Configurar Ubuntu para el cambio horario en Argentina 3

Escrito por nelson Fri, 28 Dec 2007 16:44:00 GMT

El 30 de diciembre del 2007 a las 0 hora comenzará a regir el uso horario de GMT-2 hasta el 16 de marzo del 2008 donde se volverá a utilizar GMT-3.

En Linux en /usr/share/zoneinfo está la información de zonas horarias y DST (Daylight Saving Time) de cada país (en el paquete tzdata). Esta información esta compilada en formato binario para poder ser accedida más rápido.

La gente de Debian y Ubuntu están haciendo los paquetes respectivos para actualizar los datos, pero no se si van a llegar a tiempo a los repositorios para una actualización. Para aquellos que quieran actualizar los archivos ahora o esperar a último momento, les dejo una receta.

Estando como usuario root (sudo -s) verificar que no existan configuraciones de DST

zdump -v /etc/localtime | grep 2007

luego bajar al directorio /tmp la nueva configuración temporal del archivo de zona para Argentina, descompactarlo

gzip -d zoneinfo.ar.new.gz
y ejecutar
zic -l America/Argentina/Buenos_Aires zoneinfo.ar.new

Esto compila e instala las zonas de Sudamérica y además recrea el /etc/localtime apuntándolo a la zona de Buenos Aires

Ahora si volvemos a ejecutar

zdump -v /etc/localtime | grep 2007

va a mostrarnos la configuración de DST para el 30 de diciembre.

No se ha incluido la configuración para el 16 de marzo… pero debería venir en la actualización del paquete de la distribución de linux muy pronto.

pd: si funciona todo corrento, créditos y agradecimento a ArCERT (gracias rodo!), si funciona mal, críticas y sugerencias en los comentarios….

Anteriores: 1 2 3 ... 27