arrow_back Volver
Inicio keyboard_arrow_right Artículos keyboard_arrow_right Artículo

Utiliza ficheros Yaml para la configuración de tus aplicaciones

Daniel Primo

Programador web freelance

av_timer 2 Min. de lectura

remove_red_eye 3696 visitas

En todas las aplicaciones sean del tipo que sean es necesario utilizar parámetros de configuración. Pero, ¿como accedemos a ellos y dónde podemos colocarlos?

En muchos lenguajes de programación se nos facilita esa tarea e incluso se integra con el editor de código. En otros tenemos más libertad, o dicho de otro modo, tenemos que preocuparnos por ello.

En una clasificación totalmente personal distingo dos tipos de variables configuración:

  • Las que son relevantes para la instalación, despliegue y funcionamiento de la aplicación.
  • Las que son importantes para la aplicación en aspectos como la visualización, textos, interacción con el usuario...

Las primeras claramente son variables de entorno, sensibles y que no deben aparecer en un repositorio. Nos centramos en las segundas y vamos a verlo con un ejemplo claro.

Caso de uso

En una página web de una campaña de publicidad queremos que haya una serie de parámetros que no estén dentro de ninguna base de datos, pero deben ser accesibles por parte del programador o técnico de forma sencilla.

Así queremos que pueda ajustar:

  • El texto y un parámetro de URL para el acceso al formulario de petición.
  • El correo electrónico que recibe el formulario.
  • Tres mensajes aleatorios de formulario enviado correctamente.
  • Si deben aparecer o no esos mensajes de confirmación.

Podríamos incluir estas alternativas directamente en el código. O usar un fichero de tipo JSON para configurarlo.

Ejemplo de configuración en fichero Yaml

Vamos a intentarlo con Yaml y ya verás que sencillo es. Este es el código:

mail: pepeexample.com
link:
  text: Envía tu petición
  href: campaign=peticion
messages:
  - Gracias por escribirnos
  - ¡Muchas gracias!
  - |
    Nuestros corazones 
    se sienten muy alegres
    por tu mensaje
show_messages: true

Algunas cosas interesantes que vemos aquí:

  • Las variables se asignan en el formato clave: valor
  • Creamos datos anidados utilizando la identación, tal y como ves en el caso de link
  • Un diccionario o array utiliza el formato de lista como lo que está por debajo de messages
  • Podemos crear un valor multilínea utilizando el caracter |
  • Los booleanos son reales y así se van a utilizar. La palabra true asignada a una variable será lo que esperamos.

Puedes ver más detalles en la especificación oficial.

Analizar el fichero de configuración en PHP

Veremos luego un ejemplo con python. El resultado es muy similar en cualquier lenguaje de programación, hay soporte para Java, Haskell, Go, Perl, JavaScript...

Guardamos la configuración en el fichero config.yml.

Cargamos la dependencia de la librería de Symfony que nos permite agilizar el parse del fichero Yaml.

composer require symfony/yaml

Creamos un fichero con este código.

<?php
include  'vendor/autoload.php';

use Symfony\Component\Yaml\Yaml;

var_dump(Yaml::parseFile('config.yml'));

Simplemente utilizamos el método parseFile que se encarga de leer el contenido y ponerlo a disposición del analizador.

El resultado obtenido será este array:


     "mail" => "pepeexample.com",
     "link" => [
       "text" => "Envía tu petición",
       "href" => "campaign=peticion",
     ],
     "messages" => [
       "Gracias por escribirnos",
       "¡Muchas gracias!",
       "Nuestros corazones \n
         se sienten muy alegres\n
         por tu mensaje\n
        ",
     ],
     "show_messages" => true,
   ]

Analizar el fichero de configuración en Pyhton

De la misma forma añadimos la dependencia de la librería PyYaml para que se encarge de leer el formato.

pip install pyyaml

Unas líneas para capturar la información del fichero y lanzarlo por pantalla.

import yaml
import pprint

with  open("config.yml",  'r')  as stream:
    pprint.pprint(yaml.load(stream))

Y aquí está nuestra estructura de datos.

{'link': {'href': 'campaign=peticion', 'text': 'Envía tu petición'},
 'mail': 'pepeexample.com',
 'messages': ['Gracias por escribirnos',
              '¡Muchas gracias!',
              'Nuestros corazones \nse sienten muy alegres\npor tu mensaje\n'],
 'show_messages': True}

Como ves es un formato muy cómodo. Encuentra implementaciones para tu lenguaje favorito en la web de Yaml.

Espero que te haya gustado, nos leemos en el próximo artículo 😉

Bootcamp Ciencia de Datos

12 semanas de formación intensiva en los conocimientos, fundamentos, y herramientas que necesitas para ser científico de datos

Más información