Esta es la primera entrega de una serie de posts que pretenden crear un sistema básico sobre el cual construir una aplicación completa.
Este código surgió después de investigar las mejores prácticas de programación en Ruby on Rails para el proyecto que estoy desarrollando actualmente.
Como ya había comentado en otro post, el proyecto que estoy haciendo será el típico sistema web que permite a usuarios registrarse, obtener una cuenta de acceso al sistema y comenzar a usar la funcionalidad propia de la aplicación.
Como todo lo relacionado con RoR, hay muchísimas referencias y tips para hacer determinada funcionalidad. Estos posts reflejan lo que a mi consideración es la mejor manera, al momento, de crear una aplicación en RoR.
Necesitaremos:
- sqlite3 - Base de datos para desarrollo. Cuando la aplicación sea puesta a producción, configuraremos PostgreSQL
- restful_authentication - Para hacer la autenticación de los usuarios en el sistema
- openid - Para poder hacer autenticación de usuarios que ya cuenten con un identity URL de OpenID
Además, la aplicación tratará de ser, en la medida de lo posible, lo más RESTful que se pueda.
El ambiente en el que desarrollo es una máquina Debian GNU/Linux etch, con los repositorios oficiales y donde ya tengo instalado ruby y rubygems.
Aquí vamos!
Instalar sqlite3
Primero instalamos las bibliotecas de sqlite3 para poder usarla como base de datos de desarrollo.
Como root, instalamos la biblioteca directamente de los repositorios de Debian usando aptitude:
debian:~# aptitude install sqlite3 libsqlite3-dev
Después instalamos la gem de para usar sqlite3 con ruby, también como root:
debian:~# gem install sqlite3-ruby
Generamos el proyecto indicando que queremos usar sqlite3 como nuestra base de datos:
miguel@debian:~$ rails -d sqlite3 rails_app
miguel@debian:~$ cd rails_app/
miguel@debian:~/rails_app$ rake db:migrate
(in /home/miguel/rails_app)
miguel@debian:~/rails_app$
Si todo está bien instalado, no debería obtener ningún error durante el rake db:migrate.
En el siguiente post crearemos un sistema de autenticación usando restful_authentication.

Hey Mr. Mike. Siguiendo un poco mi parte ingenieril... pues estoy tratando de seguir tu blog. Aquí estoy siguiente esta primera entrada y ya tengo problemas. Instalando el GEM de de sql me dió el siguiente problema.
/usr/bin/gem1.8 install sqlite3-ruby
Building native extensions. This could take a while...
ERROR: Error installing sqlite3-ruby:
ERROR: Failed to build gem native extension.
/usr/bin/ruby1.8 extconf.rb install sqlite3-ruby
extconf.rb:1:in `require': no such file to load -- mkmf (LoadError)
from extconf.rb:1
Gem files will remain installed in /usr/lib/ruby/gems/1.8/gems/sqlite3-ruby-1.2.2 for inspection.
Results logged to /usr/lib/ruby/gems/1.8/gems/sqlite3-ruby-1.2.2/ext/sqlite3_api/gem_make.out
Te lo dejo para tus tiempos libres.
También si me puedes decir que webserver configurar para esto estaría bien.
Saludos
LowG
Pues tiene muchisimo que no uso ruby on rails, lo mismo aplica para ruby. Recuerdo vagamente que antes de instalar los conectores de ruby para alguna base de datos había que instalar el library nativo de linux. Dale un
# aptitude search sqlite
y busca algo como "libsqlite". No recuerdo el nombre exacto y no puedo comprobarlo porque mi laptop acaba de morir y fue reiniciada, pero con eso deberías poder encontralo.
Respecto al webserver, yo personalmente uso ya lighttpd. Ya no uso apache porque es demasiado para mis necesidades y usa demasiada RAM. Por otro lado, si es para ruby on rails, mongrel es el rey indiscutible. Al menos hasta que vas a hacer el deploy a producción donde ya puedes usar apache, o nginx o lighttpd.
Saludos
Para variar... esto funcionó de las mil maravillas sin embargo. tiene "hoyos"? algo de lo que me deba preocupar o cerrar el acceso? También estoy por probar la base de datos... de dejare saber que pasó.