Borrar sesiones viejas en Rails 2.3 con ActiveRecordStore

Tarea rake para borrar las sesiones que no se han utilizado en las ultimas 3 horas.

desc "Borrar de la base de datos la sesiones que han expirado ."
task :delete_old_sessions => :environment do
 sesiones = ActiveRecord::SessionStore::Session.find(:all, :conditions => ['updated_at < ?', 3.hours.ago])
 sesiones.each {|s| s.delete}
end

Instalación de Feedzirra en Ubuntu 8.04

Feedzirra en un parser de feeds muy rápido, basado en nokogiri y libxml.

Primero hay que instalar nokogiri:

sudo aptitude install libxslt-dev libxml2 libxml2-dev
sudo gem install nokogiri

y luego feedzirra:

sudo apt-get install libcurl4-openssl-dev
sudo gem install feedzirra

Instalación de Rails y Passenger en Ubuntu 8.04 (Hardy)

Instalación de ruby:

sudo apt-get install build-essential 
sudo apt-get install ruby rdoc ri irb libopenssl-ruby1.8 ruby1.8-dev

Instalación de rubygems desde las fuentes, porque los paquetes para Ubuntu no están disponibles para la última versión:

cd /usr/local/src/
sudo wget http://rubyforge.org/frs/download.php/45905/rubygems-1.3.1.tgz
sudo tar xzfv rubygems-1.3.1.tgz
cd rubygems-1.3.1
sudo ruby setup.rb

sudo ln -s /usr/bin/gem1.8 /usr/bin/gem

Ahora puedes borrar los ficheros que has descargado en/usr/local/src/ si quieres.

Euruko 2009 en Barcelona, 9-10 de mayo

Pues sí­, ya tenemos fechas oficiales para la próxima Euruko (European Ruby Conference), será el fin de semana del 9-10 de Mayo de 2009 en Barcelona, en el Citilab.

Nos vemos por allí­.

Actualizar RubyGems a la versión 1.3.1

La versión 1.1 y la 1.2 de RubyGems tienen problemas para actualizarse, si después de ejecutar

$ sudo gem update --system 

ves un "Nothing to update", prueba a instalar y ejecutar la gema rubygems-update:

$ sudo gem install rubygems-update
$ sudo update_rubygems

Y a correr :)

Cierre del plazo de inscripción para la Conferencia Rails 2008

Como la mayorí­a ya sabréis, la Conferencia Rails 2008 será los próximos dí­as 13 y 14 de noviembre en Madrid, en la Escuela de Teleco.

Para cerrar temas de catering, sobre todo para la cena del jueves, desde el equipo de organización necesitamos cerrar las inscripciones y los pagos el próximo dí­a 5 de noviembre (el dí­a 5 tendrí­a que estar ya el pago en nuestra cuenta), para que de tiempo a organizarlo todo.

Así­ que si vas a venir y todaví­a no te has apuntado, ¿a qué esperas? Ya sabemos que estas cosas se suelen dejar para el final, pero necesitamos tener cerrado el número de asistentes cuanto antes.

Si lo que pasa es que no lo tienes claro puedes mirar el calendario de charlas y terminar de convencerte de que no te lo puedes perder ;)

Migrar los repositorios svn a otro servidor

Ya sé que lo que más mola ahora es Git, pero de momento en Dabne seguimos manteniendo nuestros repositorios de código en Subversion, mientras vamos trasteando con Git y valorando si cambiar del todo o seguir con un hí­brido de svn + git.

El caso es que esta semana he tenido que mover los repos a un nuevo servidor y así­ es cómo lo he hecho.

En el servidor donde están los repos hay que hacer un 'dump' de cada uno de ellos, copiarlos al servidor 2, y cargarlos en un repo nuevo recién creadito.

Recuperar contraseñas con restful_authentication

Continuación del post anterior para recuperar las contraseñas olvidadas. Crear una migration para añadir un campo reset_code al modelo User

$  script/generate migration password_reset_code

class PasswordResetCode < ActiveRecord::Migration
  def self.up
    add_column "users", "password_reset_code", :string, :limit => 40
  end

  def self.down
    remove_column "users", "password_reset_code" 
  end
end

Añadir los siguientes métodos a app/models/user.rb

Autenticación de usuarios con restful_authentication

Pasos para crear una aplicación rails con autenticación de usuarios.

Crear la aplicación rails:

$ rails myapp
$ cd myapp

Instalar el plugin restful_authentication:

$  script/plugin install http://svn.techno-weenie.net/projects/plugins/restful_authentication/

Generar el sistema de autenticación:

$ script/generate authenticated user session
$ rake db:migrate

En config/routes.rb añadir lo siguiente antes de las rutas por defecto (las dos últimas)

map.resources :users
map.resource  :session, :controller => 'session'

map.signup '/signup', :controller => 'users', :action => 'new'
map.login  '/login', :controller => 'session', :action => 'new'
map.logout '/logout', :controller => 'session', :action => 'destroy'

Mostrando el contenido del flash en Rails de forma compacta

No me acuerdo de dónde lo copié la primera vez, pero desde entonces ha ido pasando siempre de un proyecto a otro, porque es la forma que más me gusta de hacerlo.

En app/views/layouts/application.html.erb:

<% flash.each do |key, msg| -%>
  <%= content_tag :div, msg, :class => key, :id => 'flash' %>
<% end -%>

Esto crea un div con id flash y class la clave del hash, que normalmente será error o notice.