Ruby (Rails), Java, JavaScript, PostgreSQL, Cloud, Ubuntu :)

Instalando y configurando PostgreSQL en Ubuntu 12.04 para desarrollar en Ruby on Rails


Una de las tendencias actuales en cuanto a motores de bases de datos open source, es el creciente aumento en el uso de PostgreSQL para proyectos escalables y de gran envergadura. Muchas empresas están considerando migrar a PostgreSQL(si es que no lo han hecho aún) como alternativa a MySQL, ahora en manos de Oracle y con poco apoyo de parte de la comunidad, la cual se ha inclinado más hacia MariaDB.

En este post daré una reseña rápida de instalación y configuración de PostgreSQL sobre Ubuntu 12.04 LTS. Luego veremos como integrarlo con Rails.

Instalando PostgreSQL y PgAdmin3 en Ubuntu 12.04

Instalamos PostgreSQL y el paquete de desarrollo (Asegurate que sus repositorios de paquetes estén actualizados (sudo apt-get update) y si es necesario su sistema lo este también (sudo apt-get upgrade).

$ sudo apt-get install postgresql-9.1 libpq-dev

Acontinuación, opcionalmente podemos instalar PgAdmin para tener una GUI de administración de PostgreSQL.

$ sudo apt-get install pgadmin3

Ahora crearemos un usuario y lo vincularemos con nuestra sesión de usuario

$ sudo su postgres -c psql
postgres=# CREATE ROLE nombredeusuario SUPERUSER LOGIN;
postgres=# \q

Algunos comandos de postgresql útiles:\d = nos muestra la lista de relaciones en nuestra base de datos
\d nombredetabla = nos muestra el diseño de la tabla dada
\? = para una completa lista de comandos
\h = para lista de comandos sql
\h nombredecomando = nos da información sobre un determinado comando sql
\q = para salir del cliente psql

Configuraciones en Rails

Configuramos nuestr Gemfile, por defecto nos configura SQLite3 como el gestor de base de datos por defecto y agrega la gema correspondiente, podemos comentar o eliminar esa parte y agrega la gema de PostgreSQL.

# Quitar gema 'sqlite3'
gem 'pg' #Agregando gema para PostgreSQL
Nos vamos a nuestro archivo de configuracion de bases de datos en /config/database.yml

development:
  adapter: postgresql
  encoding: unicode
  database: nombreapp_desarrollo
  pool: 5
  timeout: 5000
  username: nombredeusuario
  password:

test:
  adapter: postgresql
  encoding: unicode
  database: nombreapp_pruebas
  pool: 5
  timeout: 5000
  username: nombredeusuario
  password:

Luego dejamos que el Bundler haga su magia:

$ bundle install

Por ultimo, en caso de que ya tuviéramos migraciones listas, creamos las migraciones y si es necesario las bases de datos tambien:

$ rake db:create:all
$ rake db:migrate