Leer variables del entorno (archivo .env) con Ruby y dotenv

Publicado por parzibyte en

Usar env en Ruby para leer variables del entorno

Hoy veremos cómo usar la gema de Ruby llamada dotenv para leer variables del entorno de un archivo o fichero llamado .env. Este archivo ayuda a movernos entre distintos escenarios en donde cambiamos algunas variables que dependen del entorno.

Por ejemplo, en el modo local, tenemos una contraseña y usuario para la base de datos. En nuestro servidor tenemos otra, y así sucesivamente. No sería bueno “hardcodear” o escribir en el código las credenciales de acceso, pues sería peligroso si compartimos el código, o si lo ponemos en un repositorio, etcétera.

Usar env en Ruby para leer variables del entorno

Usar env en Ruby para leer variables del entorno

Además, cada programador tiene distintas credenciales. Así que los archivos .env son usados para gestionar credenciales o claves de acceso que cambian en cada entorno.

Requisitos

Simplemente instala Ruby y prueba que el gestor de gemas funcione.

La gema dotenv

Esta gema está en este repositorio, si puedes, dale una estrella.

Ejemplo de archivo .env para leer en Ruby

Un archivo .env es algo así como el que leímos con PHP anteriormente, guarda claves y valores. Aquí está el que usaremos para exponer cómo leer variables del entorno con Ruby:

Por cierto, se les dice .env pero lo cierto es que pueden tener cualquier nombre y extensión. Podría ser incluso un .txt o uno sin extensión.

Asimismo, hay algunos que se llaman .env.example (o .env.ejemplo para los que hablamos español) que sí se comparten (es decir, se dejan en el código y se suben al control de versiones si hay uno) para que los demás programadores hagan una copia, la renombren y la llenen con sus credenciales.

Leer archivo env con Ruby

Ahora que ya expusimos el archivo env, veamos cómo es un ejemplo de su lectura:

Cargamos el archivo con Dotenv.load; esta función acepta varias rutas de archivos, por lo que podemos tener varios archivos de entorno.

Para leer una variable se usa ENV["nombre"] y en caso de que la variable no exista, se devuelve nil.

Todo lo que devuelve env es una cadena, pero podemos convertirlo con to_i, to_f u otros métodos dependiendo del uso que les vayamos a dar.

Nota: se supone que hay un método llamado require_keys que verifica que todas las claves existan (para evitar errores en tiempo de ejecución) pero no funcionaba al momento de escribir el post, aunque en el repositorio oficial dijeron que se agregaría en un futuro, por eso es que dejé la línea comentada.


parzibyte

He trabajado por más de 4 años en el desarrollo de software con experiencia en Java, PHP, JavaScript, HTML, Node.JS, Python, Android y Go. También he trabajado con bases de datos SQL como MySQL y SQLite, así como con bases de datos NoSQL usando MongoDB.Soy bueno utilizando algunos frameworks y herramientas como Firebase, jQuery, AngularJS, VueJS, CodeIgniter, Laravel, BulmaCSS, Bootstrap y Electron.Otros términos que conozco son: Arduino, GraphQL, API's, REST, AJAX, PouchDB, CouchDB, Experiencia de usuario, buenas prácticas de programación, Webpack, NPM, Administración de servidores y programación de scriptsLa plataforma en la que tengo más experiencia es la web, pero en mis ratos libres realizo unos pequeños ejercicios en C# y C.Estoy aquí para ayudarte a resolver tus problemas de programación y depuración :-)

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

This site uses Akismet to reduce spam. Learn how your comment data is processed.

A %d blogueros les gusta esto: