
# Configuration

Rudel comporte deux types de configuration : les réglages stockés dans l’option `rudel_config` WordPress et les constantes définies dans `wp-config.php`.

## L’option `rudel_config`

Les réglages se trouvent dans un tableau de `wp_options`, sous `rudel_config`. Tant que l’option n’est pas écrite, chaque clé utilise sa valeur par défaut. Les clés inconnues sont ignorées et les valeurs sont stockées sous forme d’entiers.

| Clé | Valeur par défaut | Signification |
|-----|---------|---------|
| `max_sandboxes` | `0` | Refuse de créer un bac à sable lorsque ce nombre est atteint. `0` signifie qu’il n’y a aucune limite. |
| `max_disk_mb` | `0` | Refuse de créer un bac à sable lorsque ses répertoires atteignent ce nombre de mégaoctets. Les tables clonées ne sont pas comptabilisées. `0` signifie qu’il n’y a aucune limite. |
| `default_ttl_days` | `0` | Délai d’expiration attribué aux nouveaux bacs à sable créés sans `ttl_days` ni `expires_at`. `0` signifie qu’il n’y a pas d’expiration. |
| `max_age_days` | `0` | Le nettoyage supprime les bacs à sable plus anciens que cette durée. `0` désactive la règle d’ancienneté. |
| `max_idle_days` | `0` | Le nettoyage supprime les bacs à sable sans activité enregistrée (requête ou instantané) depuis cette durée. `0` désactive la règle d’inactivité. |
| `auto_cleanup_enabled` | `1` | Exécute la politique de nettoyage de WP-Cron toutes les heures. |
| `auto_cleanup_merged` | `0` | Exécute également le nettoyage des branches fusionnées de WP-Cron. |
| `expiring_environment_notice_days` | `0` | Recueille à chaque exécution d’automatisation les bacs à sable expirant dans ce nombre de jours et les transmet à l’action `rudel_after_automation_expiring_environments`. |
| `auto_snapshot_before_restore` | `1` | Enregistre un instantané `pre-restore-...` avant chaque restauration. |

`wp rudel status` affiche les valeurs actuelles.

Écrivez l’option avec WP-CLI. Les clés omises conservent leurs valeurs par défaut :

```bash
wp option update rudel_config '{"max_age_days":14,"max_idle_days":3,"auto_cleanup_merged":1}' --format=json
```

Ou depuis PHP :

```php
$config = new Rudel\RudelConfig();
$config->set( 'max_sandboxes', 20 );
$config->save();
```

L’événement WP-Cron est planifié ou supprimé à la prochaine requête suivant une modification. Voir [Automatisation](https://rudel.inline0.dev/fr/docs/features/automation).

## Constantes

Définissez-les dans `wp-config.php` avant la ligne d’initialisation Rudel.

| Constante | Valeur par défaut | Signification |
|----------|---------|---------|
| `RUDEL_CLI_COMMAND` | `rudel` | Nom de la commande racine WP-CLI. |
| `RUDEL_ENVIRONMENTS_DIR` | `wp-content/rudel-environments` | Répertoire contenant les répertoires des bacs à sable. Les ressources du thème sont toujours servies depuis `/wp-content/rudel-environments/{id}/themes` ; un autre répertoire doit donc rester accessible à cet URL. |
| `RUDEL_RUNTIME_TABLE_PREFIX` | `rudel_` | Partie des noms de tables Rudel après le préfixe WordPress. Voir [État d’exécution](https://rudel.inline0.dev/fr/docs/features/runtime-state). |
| `RUDEL_RUNTIME_TABLE_ENVIRONMENTS` | | Nom complet de remplacement pour la table des environnements, après le préfixe WordPress. |
| `RUDEL_RUNTIME_TABLE_WORKTREES` | | Nom complet de remplacement pour la table des worktrees, après le préfixe WordPress. |
| `RUDEL_DB_DRIVER` | `auto` | Pilote d’accès `Rudel\Connection` autonome : `auto`, `mysqli` ou `pdo`. Les requêtes WordPress utilisent toujours `$wpdb`. |
| `RUDEL_GIT_AUTHOR_NAME` | `Rudel` | Nom de l’auteur que Rudel inscrit dans la configuration Git d’un checkout s’il n’a pas de `user.name`, pour les commits `wp rudel push`. |
| `RUDEL_GIT_AUTHOR_EMAIL` | `rudel@localhost` | Adresse e-mail de l’auteur que Rudel inscrit si le checkout n’a pas de `user.email`. |

## Constantes dans une requête de bac à sable

Lorsqu’une requête sélectionne un bac à sable, l’initialisation définit des constantes que le code peut lire. Les plus utiles sont :

| Constante | Valeur |
|----------|-------|
| `RUDEL_ID` | ID du bac à sable |
| `RUDEL_PATH` | Répertoire du bac à sable |
| `RUDEL_TABLE_PREFIX` | Préfixe de table du bac à sable |
| `RUDEL_THEME_SLUG` | Thème servi depuis le bac à sable |
| `RUDEL_HOST_URL`, `RUDEL_ENVIRONMENT_URL` | URL de l’hôte et du bac à sable |
| `RUDEL_DISABLE_EMAIL` | `true` ; les e-mails sortants sont bloqués |

Privilégiez les méthodes [API](https://rudel.inline0.dev/fr/docs/api)], comme `Rudel::id()`, plutôt que la lecture directe des constantes.

L’initialisation définit également `WP_DEBUG`, `WP_DEBUG_LOG`, `WP_DEBUG_DISPLAY`, `WP_TEMP_DIR`, `WP_CACHE_KEY_SALT` ainsi que les huit clés et sels d’authentification, mais uniquement ceux que `wp-config.php` n’a pas déjà définis. Voir [Journalisation des erreurs](https://rudel.inline0.dev/fr/docs/features/logging) et [Isolation](https://rudel.inline0.dev/fr/docs/environments/isolation).
