Cuando se crea un sistema de login con Devise todo funciona perfecto salido de la caja excepto el recuperar contraseñas, la razón es muy sencilla, esto se hace via email y para que rails pueda enviar un email necesita tener un sender (enviador) configurado, este modulo en rails 4 recibe el nombre de
Action Mailer.

Configurando action_mailer para enviar correos con gmail

para hacerlo basta abrir el archivo de configuración config/application.rb (también es posible ocupar un initializer) y agregar las siguientes líneas dentro del module y de class Application.

donde dice ENV[‘email’] y password podemos cambiarlas por nuestras claves de email y al reiniciar la aplicación ya estaría funcionando pero hay un problema grande con hacer eso, estaríamos dejando las claves del correo electrónico dentro de nuestro código.

Además hoy en día gmail no soporta utilizar el password directamente desde una aplicación, para crear un password exclusivo para nuestra app debemos ir a: https://security.google.com/settings/security/apppasswords y crear un passowrd para nuestra aplicación.

Protegiendo las claves con dot-env

Dot-env es una gema que nos permite agregar variables de entorno de forma sencilla a nuestra aplicación, para eso vamos agregar la siguiente gema al gemfile

luego tenemos que crear un archivo .env (si, el punto es parte del nombre) dentro de la raíz de nuestro proyecto, en el vamos a agregar las variables de entorno.

y ya con eso nuestra aplicación permite recuperar las contraseñas del usuario desde el sign_in.

Evitando adjuntar el archivo .env por error al repositorio

Ahora debemos de asegurarnos de no adjuntar este archivo por error cuando hagamos un commit, para eso vamos a abrir el archivo .gitignore (esto sólo aplica si están ocupando GIT)

Configurando Heroku para que acepte las variables de entorno

Si ocupas Heroku te estarás preguntando como pasar el archivo .env si no está en el repositorio, el secreto es que no se pasa, vamos a ocupar la terminal para dar los valores de las variables de entorno.

Entonces desde la terminal dentro de la carpeta del proyecto, escribimos:

y ahora si que si, tus claves están seguras y tu aplicación está funcionando con la opción de recuperar contraseñas.

Share Button

Director de DesafíoLatam. Ingeniero Civil Informático de la Universidad Federico Santa María. Emprendedor lean, dedicado al desarrollo de una mejor web con ruby on rails. Fanático de los números y las métricas, la música y la fotografía.