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.