Conecta con nosotros

Hola, ¿qué estás buscando?

Prácticos

Cómo configurar PostgreSQL para que funcione con Ruby on Rails

PostgreSQL

En diciembre del año pasado publicamos un tutorial sobre cómo instalar Ruby on Rails desde las fuentes oficiales sobre Ubuntu y Fedora, algo que requiere de la compilación previa de Ruby antes de instalar la gem Rails, que es el conocido framework para crear aplicaciones web.

Sin embargo, en aquella ocasión el usuario solo podía utilizar el Sistema Gestor de Bases de Datos (SGBD) Sqlite, que posiblemente puede terminar quedándose corto para grandes proyectos, así que hoy publicaremos cómo preparar PostgreSQL para utilizarlo con Ruby on Rails, abarcando las mismas distribuciones, aunque no exactamente las mismas versiones, que en el tutorial anterior.

Paquetes para instalar PostgreSQL y cómo ponerlo en funcionamiento

La instalación de PostgreSQL y los componentes necesarios para el desarrollo se realiza a través de los siguientes paquetes en Ubuntu 16.04 y Ubuntu 18.04:

sudo apt-get install postgresql postgresql-contrib libpq-dev

Mientras que para Fedora 28 lo que es requiere instalar es esto:

sudo dnf install postgresql postgresql-server postgresql-contrib libpqxx-devel

En Fedora se debe realizar un paso adicional para poder arrancar PostgreSQL a través de systemd, que es el siguiente:

sudo postgresql-setup --initdb --unit postgresql

Llegados a este punto, tanto en Ubuntu como en Fedora se puede iniciar PostgreSQL empleando systemd:

sudo systemctl start postgresql

Si se quiere que el SGBD se inicie con el sistema (cosa que en Ubuntu se configura por defecto, pero no en Fedora) solo hay que poner enable en lugar de start:

sudo systemctl enable postgresql

Si se quiere hacer lo contrario, solo hay que poner disable en el mismo sitio para que el servicio no se inicie con el arranque del sistema:

sudo systemctl disable postgresql

Y ya que estamos detallando cómo gestionar de forma básica el servicio, ponemos los comandos para detenerlo y reiniciarlo.

Advertencia, desplázate para continuar leyendo

Detener:

sudo systemctl stop postgresql

Reiniciar:

sudo systemctl restart postgresql

En caso de querer instalar otra versión de PostgreSQL se puede recurrir a su página de descargas, que contiene instrucciones con repositorios para algunos sistemas operativos concretos.

Cómo configurar PostgreSQL para que funcione con Ruby on Rails

Tras poner en marcha el SGBD, ahora lo que hay que llevar a cabo es la configuración del mismo servicio para que pueda ser usado con el framework Ruby on Rails.

Lo primero que se tiene que hacer es configurar un usuario para el SGBD con el mismo nombre que el que está en ejecución en el sistema. Para obtener el nombre del usuario solo hay que ejecutar el siguiente comando:

echo $USER

Supongamos que el resulto obtenido es “tuusuario”, así que el comando para configurar el usuario de PostgreSQL es el siguiente:

sudo -u postgres createuser -s tuusuario

Si se quiere establecer una contraseña a nivel del SGBD habrá que acceder a la CLI de PostgreSQL, aunque antes de este paso sería recomendable crear otro usuario cuyo nombre puede inventarse (sí, el del nombre coincidente es mejor que se quede sin contraseña a nivel del SGBD):

sudo -u postgres psql

Una vez dentro, el usuario verá delante “postgres=#”. Este es el comando a introducir para establecer una contraseña:

\password tuusuario

Para salirse de la CLI de PostgreSQL hay que introducir lo siguiente:

\q

Configurar un proyecto de Ruby on Rails para que funcione con PostgreSQL

Antes que nada, es importante asegurarse de que el servicio del SGBD esté en funcionamiento, algo que se puede comprobar de la siguiente manera:

sudo systemctl status postgresql.service

Tras comprobar que el servicio está realmente activo, se procede a crear el proyecto de Ruby on Rails:

rails new ApliPrueba --database=postgresql

Después se accede al subdirectorio del proyecto:

cd ApliPrueba

Para luego crear y migrar la base de datos:

rails db:create
rails db:migrate

La configuración de la base de datos se ubica en el fichero “config/database.yml” dentro del proyecto de Rails. Aquí pondremos un pequeño ejemplo de configuración con un usuario inventado, aunque para desarrollar y probar cosas no es necesario modificar nada de lo que esté por defecto:

# PostgreSQL. Versions 9.1 and up are supported.
#
# Install the pg driver:
# gem install pg
# On OS X with Homebrew:
# gem install pg -- --with-pg-config=/usr/local/bin/pg_config
# On OS X with MacPorts:
# gem install pg -- --with-pg-config=/opt/local/lib/postgresql84/bin/pg_config
# On Windows:
# gem install pg
# Choose the win32 build.
# Install PostgreSQL and put its /bin directory on your path.
#
# Configure Using Gemfile
# gem 'pg'
#
default: &default
adapter: postgresql
encoding: unicode
# For details on connection pooling, see Rails configuration guide
# http://guides.rubyonrails.org/configuring.html#database-pooling
pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
# Añadido para configurar Ruby On Rails para PostgreSQL
host: localhost
username: muylinux
password: muylinux

development:
<<: *default
database: ApliPrueba_development

# The specified database role being used to connect to postgres.
# To create additional roles in postgres see `$ createuser --help`.
# When left blank, postgres will use the default role. This is
# the same name as the operating system user that initialized the database.
#username: ApliPrueba

# The password associated with the postgres role (username).
#password:

# Connect on a TCP socket. Omitted by default since the client uses a
# domain socket that doesn't need configuration. Windows does not have
# domain sockets, so uncomment these lines.
#host: localhost

# The TCP port the server listens on. Defaults to 5432.
# If your server runs on a different port number, change accordingly.
#port: 5432

# Schema search path. The server defaults to $user,public
#schema_search_path: myapp,sharedapp,public

# Minimum log levels, in increasing order:
# debug5, debug4, debug3, debug2, debug1,
# log, notice, warning, error, fatal, and panic
# Defaults to warning.
#min_messages: notice

# Warning: The database defined as "test" will be erased and
# re-generated from your development database when you run "rake".
# Do not set this db to the same as development or production.
test:
<<: *default
database: ApliPrueba_test

# As with config/secrets.yml, you never want to store sensitive information,
# like your database password, in your source code. If your source code is
# ever seen by anyone, they now have access to your database.
#
# Instead, provide the password as a unix environment variable when you boot
# the app. Read http://guides.rubyonrails.org/configuring.html#configuring-a-database
# for a full rundown on how to provide these environment variables in a
# production deployment.
#
# On Heroku and other platform providers, you may have a full connection URL
# available as an environment variable. For example:
#
# DATABASE_URL="postgres://myuser:mypass@localhost/somedatabase"
#
# You can use this database configuration with:
#
# production:
# url: <%= ENV['DATABASE_URL'] %>
#
production:
<<: *default
database: ApliPrueba_production
username: ApliPrueba
password: <%= ENV['APLIPRUEBA_DATABASE_PASSWORD'] %>

34 Comentarios
Advertencia
Advertencia

Te recomendamos

Actualidad

Oracle ha publicado JDK 22, que dependiendo del prisma por el que se mire puede ser entendido como OpenJDK 22 o Java 22. Una...

Actualidad

El uso de la línea de comandos sigue estando muy vigente en Linux, así que vamos a aprovechar la ocasión para presentar a Warp,...

Actualidad

Las quejas han surtido efecto y, tras conocerse que la nueva versión de Visual Studio Code dejaba sin soporte a «distribuciones Linux viejas», los responsables...

Actualidad

Hace un par de días que se anunció el lanzamiento de Visual Studio Code 1.86, la versión mensual del editor de código multiplataforma de Microsoft....