Vous êtes sur la page 1sur 36

Capacitación formadores Generación de

capacidades en el Ecosistema Digital de


Bogotá

Formación especializada TI
Bases de datos PG
En Ruby on Rails
Configurar bases de datos Postgresql en Rails
Lo primero para poder utilizar PostgreSql como gestor de base de datos en Rails
es agregar la respectiva gema y ejecutar el comando bundle install.

$ Gem ‘pg’
Pasos previos
Antes de iniciar la configuración de postgresql con rails recomiendo crear un usuario en postgresql con
permisos limitados. Para esto podemos apoyarnos en pgadmin. Nos conectamos a nuestro servidor y
luego damos clic derecho crear ROL y llenamos los datos.
Configuración de conexión a base de datos
Cuando se crea una aplicación Ruby on Rails sin especificar el gestor de base de
datos, por defecto la configuración se encontrara definida para SQLite.

Para configurar la base de datos con la que se comunicara Rails usaremos un


archivo de configuración llamada database.yml, ubicado en:

RAILS_ROOT/config/database.yml

Note: RAILS_ROOT es la carpeta raíz de nuestro proyecto.


database.yml
El archivo database.yml es usado por Rails para conectarse a la base de datos apropiada
dependiendo el actual entorno de desarrollo. esto usa YAML, un estándar para la
serialización de datos. Aquí se enlistan las base de datos para diferentes entornos de
desarrollo; development, test, and production configurados previamente por el generador
de Rails. Por defecto Rails espera que uses diferentes bases de datos para cada uno de los
entornos de la aplicación, esto tiene mucha lógica ya que, por ejemplo. la base de datos
para pruebas estará vacía y se podrá reconstruir cada vez que se ejecuten las pruebas de
la aplicación.
Para cada base de datos, se debe asegurar que coincidan con el usuario y contraseña que se definieron
en Postgresql.
Rake db:setup
Luego de ingresar los datos en el archivo de configuración debemos ejecutar el
comando rake db:setup con el cual se crearan las bases de datos en nuestro
gestor de bases de datos.

Esto creará bases de datos de desarrollo, prueba y produccion, establecerá sus


propietarios para el usuario especificado y creará tablas "schema_migrations" en
cada uno. Esta tabla se usa para registrar sus migraciones a esquemas y datos.
Rake db:migrate
Luego de completar la configuración de nuestro gestor de base de datos cuando
realicemos migraciones en la base de datos podremos visualizar como se crean
o modifican cada una de las tablas.
Comando Rake
En la tradición de Unix, la utilidad Make ha jugado un papel importante en la creación de programas
ejecutables a partir del código fuente. Rake es Ruby make, un lenguaje de Make-like escrito en Ruby.

Antes de Rails 5, Ruby on Rails usaba Rake extensivamente, por lo que para aplicaciones Rails
heredadas es importante saber cómo usarlo. Probablemente los dos comandos de Rake más comunes
en un contexto de Rails son rake db:migrate (para actualizar la base de datos con un modelo de datos) y
rake test (para ejecutar el conjunto de pruebas automatizado). En estos y otros usos de rake, es
importante asegurarse de que el comando utilice la versión de Rake correspondiente al Gemfile de la
aplicación Rails, que se lleva a cabo utilizando el comando bundle exec de Bundler. Por lo tanto, el
comando de migración

rake db:migrate
puede ser escrito como: bundle exec rake db:migrate
Comandos Rake más comunes para bases de datos.
● rake db:create # Crea la Base de datos
● rake db:drop # Elimina la base de datos
● rake db:migrate # Ejecuta las migraciones pendientes
● rake db:migrate:status # Muestra el estatus de las migraciones
● rake db:rollback # Retrocede la última migración
● rake db:schema:load # Load a schema.rb file into the database
● rake db:seed # Carga datos semilla de db/seeds.rb
● rake db:setup # Crea base de datos, carga el esquema y corre los
datos semilla
Enviar Mails
En Ruby on Rails
Action Mailer en Rails
Action Mailer le permite enviar correos electrónicos desde su aplicación usando
clases y vistas de correo. Los Mailers funcionan de manera muy similar a los
controladores. Heredan de ActionMailer::Base y viven en app/mailers, y tienen
vistas asociadas que aparecen en la app/views.
Crear Mailers
Al igual que con otros elementos de Rails contamos con generadores de código
que nos permiten crear y configurar la mayoría de archivos que necesitamos. En
el caso de los mailers podemos ejecutar.

Rails generate mailer [NombreClase]


Archivos Mailer
Como puede ver, puede generar mailers como lo hace con otros generadores
con Rails. Los Mailers son conceptualmente similares a los controladores, por lo
que obtenemos por cada mailer, un directorio de vistas y uno para pruebas.
Configuración de Action Mailer en Ruby on Rails
Action Mailer Configuración para Gmail
Como Action Mailer ahora usa gem Mail, esto se vuelve tan simple como
agregarlo a su archivo config /environments /$RAILS_ENV.rb:
Definir métodos
Por el lado de Rails nos faltaría crear los métodos correspondientes al envío de
mensajes, ya habíamos creado un controlador, ahora sobre este vamos a definir
un método. Si queremos tener acceso a un dato en particular estaría bien definir
que nuestro método recibe un argumento por ejemplo un usuario o un arreglo de
usuarios y luego podríamos enviar ese argumento a la vista tal cual hacíamos
con los controladores. Por defecto contamos con el método mail el cual envía el
mensaje y también recibe un hash de opciones, como por ejemplo a quien vamos
a enviar el mensaje, el asunto y otros.
Vista Mail
Cuando definimos nuestro Mailer y creamos un método nos corresponde
también crear las vistas correspondientes a este método y del mismo modo
como trabajamos en los controladores vamos a crear el mensaje en html.erb
Enviar mensaje
Para que el mensaje se envié debemos invocar el método del Mailer desde algún
controlador. Por ejemplo si queremos que se envié un mensaje cuando se crea
un nuevo articulo…
Letter Opener
Para hacer pruebas en desarrollo nos podemos apoyar en una gema que nos
permite visualizar vistas previas de nuestros correos en vez de enviarlos.

gem "letter_opener", :group => :development


Configuración Letter Opener
Vamos al archivo config/environments/development.rb y agregamos la siguiente
configuración para mailers en cambio de la que teníamos de nuestro correo.

config.action_mailer.delivery_method = :letter_opener
config.action_mailer.perform_deliveries = true

Ahora, cualquier correo electrónico aparecerá en su navegador en lugar de


enviarse. Los mensajes se almacenan en tmp / letter_opener . Si desea cambiar
la aplicación que se utilizará para abrir sus correos electrónicos, debe anular la
variable de entorno LAUNCHY_APPLICATION o establecer Launchy.application
en el inicializador.
Letter Opener
Con esta configuración cada vez que ejecutamos el método que dispara el
mailers el navegador abrirá una nueva pestaña en la cual nos mostrara una vista
de como se vería nuestro mensaje.
SendGrid
SendGrid es una plataforma de comunicación para correo electrónico
transaccional y de marketing con sede en Denver, Colorado. Nos provee un API y
un servidor smtp gratuito o de pago el cual podemos integrar fácilmente en rails
u otros lenguajes.
SenGrid configuración
Lo primero que debemos hacer es crear una cuenta gratuita en SendGrid luego
debemos ingresar a la opción Integrate using our Web API or SMTP relay y
escogemos la opción SMTP Relay. En esta pantalla creamos un token y
copiamos la configuración en el archivo de configuración para el entorno de
producción, por ejemplo.
Delayed job
Esta gema nos permite agregar colas de procesos en Rails y puede ser una
herramienta útil para enviar correos ya que al invocar un Mailer rails depende del
servidor de correos asociado y si este no esta funcionando bien podemos dañar
el flujo de la aplicación, en esta medida con esta gema el proceso que inicia el
Mailer va a una cola y el controlador desde donde invocamos el Mailer continua
su ejecución sin esperar confirmación de que el correo se envío correctamente.
Para instalarla debemos agregar la gema.

gem 'delayed_job_active_record'
Delayed job- Configuración
Esta gema incluye un generador de código que nos permite configurar
rápidamente su funcionamiento.

Rails generate delayed_job:active_record

Esto creara una migración con una tabla con el listado de trabajos en la cola.
Entonces debemos ejecutar la migración rake db:migrate. Y finalamente vamos a
config/application.rb y agregamos la siguiente línea.

config.active_job.queue_adapter = :delayed_job
Delayed job -Agregar elementos a la cola
Para ejecutar esta gema vamos a cambiar el método deliver_now por
deliver_later! En el controlador que ejecuta nuestro método del Mailer. De esta
manera se agrega a la cola (queue) el mensaje pendiente por enviar. Para que
efectivamente se envíe se debe ejecutar el comando rake jobs:workoff

Este es el modo habitual que utilizamos cuando vamos a enviar correos masivos,
ya que de esta manera no sobre cargamos la aplicación que a su vez requiere un
servicio externo en este caso un servidor smtp.
Despliegue de aplicaciones
Rails
En Heroku
Despliegue de aplicación con Heroku
La implementación de aplicaciones de Rails solía ser un problema, pero el ecosistema de
implementación de Rails ha madurado rápidamente en los últimos años, y ahora hay varias
opciones excelentes. Estos incluyen hosts compartidos o servidores privados virtuales que
ejecutan Phusion Passenger (un módulo para los servidores web Apache y Nginx),
empresas de implementación de servicio completo tales como Engine Yard y Rails
Machine, y servicios de implementación en la nube como Engine Yard Cloud y Heroku.

La opción que tendremos en cuenta para implementación de Rails es Heroku que es una
plataforma alojada específicamente para desplegar Rails y otras aplicaciones web. Heroku
hace que la implementación de las aplicaciones Rails sea ridículamente fácil, siempre y
cuando su código fuente esté bajo control de versión con Git.
Configuración de Heroku
Heroku usa la base de datos PostgreSQL, lo que significa que necesitamos
agregar la gema pg en el entorno de producción para permitir que Rails hable
con Postgres (verificamos la estemos usando).

Luego tenemos que crear y configurar una nueva cuenta de Heroku


(www.heroku.com/). El primer paso es inscribirse en Heroku. Luego verifique si
su sistema ya tiene instalado el cliente de línea de comandos Heroku:
Heroku --version
Heroku login
Una vez que haya verificado que la interfaz de línea de comandos de Heroku está
instalada, use el comando heroku para iniciar sesión:

Heroku login
Crear proyecto en Heroku
Luego crear la cuenta nos logueamos en la pagina de Heroku y creamos un
proyecto nuevo. Podemos dejar el nombre del proyecto vacío y Heroku asignará
un nombre aleatorio a nuestro proyecto.
Heroku y Git
Recuerda que Rails por defecto nos inicializa un proyecto de git en nuestra aplicación, para
que podamos implementar nuestro proyecto en Heroku debemos hacer un Push por medio
de la consola así que verifica el estado de tu repositorio y realiza un commit si es
necesario.

Para implementar la aplicación, el primer paso es agregar el repositorio de heroku

$ heroku git:remote -a evening-garden-19765

Luego debemos usar Git para enviar la rama principal a Heroku:

$ git push heroku master


Procfile
Ahora nuestro proyecto ya se encuentra alojado en los servidores de Heroku sin
embargo aún no hemos realizado un rails server para iniciar nuestra aplicación.
Para poder hacer esto vamos a crear un archivo procfile en el cual definiremos
que instrucciones debe correr heroku sobre nuestro proyecto.

Creamos una archivo de nombre Procfile sin extensión y agregamos la siguiente


línea:

web: puma -t 5:5 -p ${PORT:-3000} -e ${RACK_ENV:-development}


Migración BD
Cuando implementamos una aplicación rails en Heroku y contiene la gema pg
este por defecto nos configura la base de datos, sin embargo al igual que sucede
en el entorno local debemos realizar la respectiva migración. Para esto
ejecutamos el siguiente comando desde la consola.

$ heroku run rake db:migrate


Open
Con esto el despliegue de nuestra aplicación esta completa, ahora podemos
acceder a ellas desde el dominio que nos provee Heroku o usando el comando:

$ heroku open

Advertencia: Cuando nuestra aplicación esta desplegada en modo de


producción no nos despliega los errores en pantalla, si tienes un error ve a la
consola de heroku desde la web o por terminal con el comando:

$ heroku logs --tail

Vous aimerez peut-être aussi