C9 IDE ft. Rails & Postgresql
Durante mi experiencia desarrollando mi aplicación web con el framework Ruby on Rails mi equipo y yo nos enfrentamos con un problema, ya que no creamos la aplicación en un principio con Postgresql y se creó por default con SQLite. A medio desarrollo de la aplicación decidimos empezar a migrarla y nos tomó más de un intento,y fue más sencillo de lo que parecía y en internet había muchas respuestas con comandos y configuraciones diferentes.
Si tienes el mismo problema y te quieres migrar de base de datos, lo primero que tienes que hacer es instalar en el Gemfile la gema de Postgresql
gem 'pg', '0.18.4'
Seguido del comando bundle install para instalar las gemas de tu Gemfile
~/workspace/app $ bundle install
Lo siguiente es configurar el archivo app/config/database.yml, este archivo contiene toda la configuración de cómo está definida la conexión a nuestras bases de datos
default: &default
adapter: postgresql
encoding: SQL_ASCII
pool: 5
username: ubuntu
password: passworddevelopment:
<<: *default
database: developmenttest:
<<: *default
database: testproduction:
<<: *default
database: production
después necesitamos iniciar el servicio de Postgresql en la terminal de c9
$ sudo service postgresql start
Seguido nos tendremos que conectar con el servicio para configurar cada apartado que escribimos en el database.yml (usuario, contraseña, bases de datos)
$psql
Algunos comandos dentro de PSQL:
Para mostrar las bases de datos
ubuntu=# \l
Para seleccionar alguna base de datos
ubuntu=# \c NombreDeLaBD
Para mostrar todas las tablas de la base de datos seleccionada
NombreDeLaBD=# \d
Para seleccionar una tabla en especifico
NombreDeLaBD=# \d NombreTabla
Para obtener algún dato, ingresa la consulta deseada (no olvides el ; para ejecutar la consulta)
NombreDeLaBD=# SELECT * FROM NombreTabla;
Muy importante, para salirte de las ventanas y del cliente de PSQL puedes utilizar el comando “CTRL + d” ó
\q
Por default en c9, al conectarnos con el servicio de Postgresql iniciaremos con el usuario “ubuntu”, para cambiar o asignarle una contraseña a este usuario, ingresamos
ubuntu=# \password
Enter new password:
recuerda que este usuario y contraseña tienen que ser los mismos que los que declaramos en el archivo app/config/database.yml
Seguido tenemos que crear las bases de datos declaradas en nuestro archivo app/config/database.yml , ya sea para development, test y production
ubuntu=# CREATE DATABASE development;
ubuntu=# CREATE DATABASE test;
ubuntu=# CREATE DATABASE production;
no olvides escribir “;” después de cada instrucción, si deseas eliminar alguna base de datos, ingresa
ubuntu=# DROP DATABASE development;
Ya para finalizar tenemos que salirnos de nuestra conexión con el servicio de psql y tendremos que migrar y reiniciar la base de datos de nuestra aplicación en rails
~/workspace/app $ rails db:migrate:reset
Si ya creaste los seeds de tu aplicación
~/workspace/app $ rails db:seed
Si tus migraciones están bien hechas y tu app/config/database.yml esta bien configurado, no tendrás ningún problema.
Si tu aplicación va a usar el formato de codificación UTF-8 tendrás que realizar varias modificaciones en el archivo app/config/database.yml y en el servicio de Postgresql.
Primero que nada tendremos que cambiar en database.yml el método de codificación en encoding por UTF8
default: &default
adapter: postgresql
encoding: UTF8
pool: 5
username: ubuntu
password: passworddevelopment:
<<: *default
database: developmenttest:
<<: *default
database: testproduction:
<<: *default
database: production
Seguido nos conectamos al servicio de Postgresql para modificar los templates que ya trae Postgresql
update pg_database set datallowconn = TRUE where datname = 'template0';
\c template0
update pg_database set datistemplate = FALSE where datname = 'template1';
drop database template1;
create database template1 with template = template0 encoding = 'UTF8';
update pg_database set datistemplate = TRUE where datname = 'template1';
\c template1
update pg_database set datallowconn = FALSE where datname = 'template0';
y ahora creamos las bases de datos (development, test, production) con la nueva codificación UTF-8
ubuntu=# CREATE DATABASE development ENCODING = 'UTF8';
ubuntu=# CREATE DATABASE test ENCODING = 'UTF8';
ubuntu=# CREATE DATABASE production ENCODING = 'UTF8';
Para finalizar, tendremos que migrar y reiniciar la base de datos de nuestra aplicación de Rails
~/workspace/app $ rails db:migrate:reset
Recursos: