
# Configurazione

Rudel prevede due tipi di configurazione: le impostazioni memorizzate nell'opzione `rudel_config` WordPress e le costanti definite in `wp-config.php`.

## L'opzione `rudel_config`

Le impostazioni si trovano in un unico array in `wp_options`, sotto `rudel_config`. Finché l'opzione non viene scritta, ogni chiave usa il proprio valore predefinito. Le chiavi sconosciute vengono ignorate e i valori sono memorizzati come interi.

| Chiave | Predefinito | Significato |
|-----|---------|---------|
| `max_sandboxes` | `0` | Rifiuta la creazione di una sandbox quando il numero raggiunge questo valore. `0` significa nessun limite. |
| `max_disk_mb` | `0` | Rifiuta la creazione di una sandbox quando le sue directory raggiungono questa dimensione in megabyte. Le tabelle clonate non vengono conteggiate. `0` significa nessun limite. |
| `default_ttl_days` | `0` | Scadenza assegnata alle nuove sandbox create senza `ttl_days` o `expires_at`. `0` significa nessuna scadenza. |
| `max_age_days` | `0` | La pulizia rimuove le sandbox più vecchie di questo valore. `0` disabilita il limite di anzianità. |
| `max_idle_days` | `0` | La pulizia rimuove le sandbox senza attività registrata (una richiesta alla sandbox o uno snapshot) per questo intervallo. `0` disabilita il limite di inattività. |
| `auto_cleanup_enabled` | `1` | Applica ogni ora la regola di pulizia da WP-Cron. |
| `auto_cleanup_merged` | `0` | Applica anche la pulizia dei rami uniti da WP-Cron. |
| `expiring_environment_notice_days` | `0` | A ogni esecuzione dell'automazione, raccoglie le sandbox in scadenza entro questo numero di giorni e le passa all'azione `rudel_after_automation_expiring_environments`. |
| `auto_snapshot_before_restore` | `1` | Salva uno snapshot `pre-restore-...` prima di ogni ripristino. |

`wp rudel status` stampa i valori correnti.

Scrivete l'opzione con WP-CLI. Le chiavi omesse mantengono i valori predefiniti:

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

Oppure da PHP:

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

L'evento WP-Cron viene pianificato o rimosso alla richiesta successiva alla modifica. Vedi [Automazione](https://rudel.inline0.dev/it/docs/features/automation).

## Costanti

Definite queste costanti in `wp-config.php` prima della riga di bootstrap Rudel.

| Costante | Predefinito | Significato |
|----------|---------|---------|
| `RUDEL_CLI_COMMAND` | `rudel` | Nome del comando WP-CLI radice. |
| `RUDEL_ENVIRONMENTS_DIR` | `wp-content/rudel-environments` | Directory che contiene le directory delle sandbox. Gli asset del tema vengono sempre serviti da `/wp-content/rudel-environments/{id}/themes`, quindi un'altra directory deve essere comunque raggiungibile tramite quel URL. |
| `RUDEL_RUNTIME_TABLE_PREFIX` | `rudel_` | Parte dei nomi delle tabelle Rudel, dopo il prefisso WordPress. Vedi [Stato del runtime](https://rudel.inline0.dev/it/docs/features/runtime-state). |
| `RUDEL_RUNTIME_TABLE_ENVIRONMENTS` | | Override del nome completo della tabella degli ambienti, dopo il prefisso WordPress. |
| `RUDEL_RUNTIME_TABLE_WORKTREES` | | Override del nome completo della tabella dei worktree, dopo il prefisso WordPress. |
| `RUDEL_DB_DRIVER` | `auto` | Driver per l'accesso `Rudel\Connection` indipendente: `auto`, `mysqli` o `pdo`. Le richieste WordPress usano sempre `$wpdb`. |
| `RUDEL_GIT_AUTHOR_NAME` | `Rudel` | Nome dell'autore che Rudel scrive nella configurazione Git di un checkout quando manca `user.name`, usato per i commit `wp rudel push`. |
| `RUDEL_GIT_AUTHOR_EMAIL` | `rudel@localhost` | Email dell'autore che Rudel scrive quando nel checkout manca `user.email`. |

## Costanti all'interno di una richiesta alla sandbox

Quando una richiesta seleziona una sandbox, il bootstrap definisce costanti leggibili dal codice. Le più utili sono:

| Costante | Valore |
|----------|-------|
| `RUDEL_ID` | ID della sandbox |
| `RUDEL_PATH` | directory della sandbox |
| `RUDEL_TABLE_PREFIX` | prefisso delle tabelle della sandbox |
| `RUDEL_THEME_SLUG` | tema servito dalla sandbox |
| `RUDEL_HOST_URL`, `RUDEL_ENVIRONMENT_URL` | URL dell'host e della sandbox |
| `RUDEL_DISABLE_EMAIL` | `true`; la posta in uscita è bloccata |

Preferite i metodi [API](https://rudel.inline0.dev/it/docs/api), come `Rudel::id()`, alla lettura diretta delle costanti.

Il bootstrap definisce anche `WP_DEBUG`, `WP_DEBUG_LOG`, `WP_DEBUG_DISPLAY`, `WP_TEMP_DIR`, `WP_CACHE_KEY_SALT` e le otto chiavi e gli otto salt di autenticazione, ma solo quelli che `wp-config.php` non ha già definito. Vedi [Registrazione degli errori](https://rudel.inline0.dev/it/docs/features/logging) e [Isolamento](https://rudel.inline0.dev/it/docs/environments/isolation).
