Una vista rápida usando Ruby 1.9.3, Rails 3.2.X y Devise 2.1.0 vamos a crear usuarios usando PostgreSQL como base de datos. Esta receta escrita por Rafa Pérez supone que se está usando RVM como manejador de versiones.
Primeros pasos con Devise
Lo primero es crear el gemset adecuado para el proyecto, para esto durante la creación del proyecto le asignamos el gemset a utilizar para luego instalar Rails. Veamos como se verían las instrucciones:
rvm use 1.9.3@nombre_del_proyecto --create
gem install rails # 3.2.X
gem install pg # adaptador postgresql
gem install devise # 2.1.0
cd nombre_del_proyecto
echo rvm use 1.9.3@nombre_del_proyecto > .rvmrc
Lo siguiente será la generar la configuración de devise y el primel modelo:
rails generate devise:install
rails generate devise user
Luego de tener la configuración necesitaremos un controlador para realizar el Login:
rails g controller login index
Lo siguiente es configurar una URL por defecto en el archivo config/environments/development.rb:
config.action_mailer.default_url_options = { :host => 'localhost:3000' }
A continuación modificamos el archivo archivroutes.rb para definir nuestra root_url
root => “login:index”
Ahora configuremos el controlador especificando que es obligatorio realizar el login:

class LoginController < ApplicationController
before_filter :authenticate_user!
def index
answer = user_signed_in? ? current_user.email.to_s : 'Usuario Anonimo'
render :text => answer
end
end
Antes de empezar borramos el archivo public/index.html y corremos las migraciones y el servidor rails:
rm public/index.html
rails db:migrate
rails s
Y listo, al acceder al localhost:3000 encontraras:

Luego quedaría configurar la internacionalización para que el login aparezca en español, los mensajes de alerta, etc… pero eso es material de otro post.

Excelente aporte me ayudó mucho, me podrías decir si tienes idea sobre como hacer el sign out de un usuario pues no puedo hacerlo, y siempre tengo errores cuando lo intento
Hola ¿Qué tal?
Lo primero que necesitaría es que compartas el mensaje de error que estás viendo a fin de saber por dónde podría venir el problema. Lo otro es que podrías revisar un poco la documentación propia de devise e implementar el método de sign_out con los helpers que ellos mismos listan:
https://github.com/plataformatec/devise
Pero en teoría si mal no recuerdo debería ser algo así:
:delete %>