Un método efectivo de usar Config Split

Si usa el sistema de configuración de Drupal 8, entonces sabe que una de las partes más difíciles de usarlo de manera efectiva es administrar la configuración por entorno. Afortunadamente, el módulo Config Split facilita la administración de diferentes configuraciones en diferentes entornos, pero la forma de configurarlo correctamente no siempre es evidente. 

En esta publicación de blog, proporcionaré un método para configurar Config Split de manera eficiente, con divisiones para entornos locales, de desarrollo remoto y de producción. 

El objetivo es poder configurar las cosas correctamente la primera vez, sin tener que preocuparse por habilitar/deshabilitar manualmente diferentes "divisiones" según el entorno. 

La clave para todo es aprovechar la capacidad de Config Split para habilitar/deshabilitar divisiones individuales con la configuración en el archivo settings.php.

El primer paso es configurar sus divisiones: normalmente comienzo haciendo esto en mi entorno local. Una vez que Config Split esté habilitado, a través de la barra de herramientas de administración, diríjase a Configuración | Desarrollo | Configuración de configuración dividida (/admin/config/development/configuration/config-split). Haga clic para agregar una nueva configuración de división: en este ejemplo, utilizaremos la siguiente configuración:

  • Etiqueta: Local
  • Carpeta: ../config/splits/local
  • Activo: (seleccionado)
  • Módulos: División completa: Devel, Devel Generate, Devel Kint, Reroute emails
  • Elementos de configuración: reroute_emails.settings

Agreguemos también una segunda división para entornos de desarrollo remoto:

  • Etiqueta: Dev
  • Carpeta: ../config/splits/dev
  • Activo: (seleccionado)
  • Módulos: división completa: redirigir correos electrónicos
  • Elementos de configuración: reroute_emails.settings

Tenga en cuenta que no vamos a dividir las configuraciones de Config Split (lo sé), sino que vamos a permitir que la configuración local y de desarrollo se exporten al directorio principal /config/sync/. 

A continuación, al exportar la configuración, se crearán los siguientes directorios y archivos:

/config/splits/local/
    reroute_email.settings.yml
/config/splits/dev/
    reroute_email.settings.yml
/config/sync/
    ...
    config_split.config_split.local.yml
    config_split.config_split.dev.yml
    ...

En este punto, si no hiciéramos nada más, las divisiones "Local" y "Dev" estarían automáticamente activas todo el tiempo en todos los entornos y realmente no habríamos logrado nada todavía. 

El último paso para que todo funcione es agregar un par de líneas de código al archivo settings.php de cada entorno. Por ejemplo, en settings.local.php, agregue:

$config['config_split.config_split.local']['status'] = TRUE;
$config['config_split.config_split.dev']['status'] = FALSE;

Luego, en settings.php para los entornos de desarrollo remoto, agregue:

$config['config_split.config_split.local']['status'] = FALSE;
$config['config_split.config_split.dev']['status'] = TRUE;

Si usa un solo settings.php para todos los entornos, puede usar sentencias if para determinar el entorno actual y luego habilitar / deshabilitar las divisiones apropiadas. Por ejemplo:

if ($env == 'local') {
  $config['config_split.config_split.local']['status'] = TRUE;
  $config['config_split.config_split.dev']['status'] = FALSE;
if ($env == 'dev') {
  $config['config_split.config_split.local']['status'] = FALSE;
  $config['config_split.config_split.dev']['status'] = TRUE;
else {
  $config['config_split.config_split.local']['status'] = FALSE;
  $config['config_split.config_split.dev']['status'] = FALSE;
}

Con este tipo de configuración de Config Split, siempre podrá ejecutar inmediatamente una importación de configuración después de obtener nuevas confirmaciones del repositorio del proyecto sin tener que preocuparse de habilitar o deshabilitar sus divisiones manualmente.

Y esto ahorra mucho tiempo y errores humanos en cualquier proyecto Drupal.

¿Tienes algún proyecto en mente?

Si quieres hacer algo en Drupal tal vez puedas contratarme.

Ya sea para consultoría, desarrollo o mantenimiento de sitios web Drupal.