
# Configuração

Rudel tem dois tipos de configuração: definições armazenadas na opção `rudel_config` WordPress e constantes definidas em `wp-config.php`.

## A opção `rudel_config`

As configurações ficam em um único array em `wp_options`, sob `rudel_config`. Até que a opção seja gravada, todas as chaves usam seus valores padrão. Chaves desconhecidas são ignoradas e os valores são armazenados como números inteiros.

| Chave | Padrão | Significado |
|-----|---------|---------|
| `max_sandboxes` | `0` | Recusa criar uma sandbox quando houver essa quantidade. `0` significa sem limite. |
| `max_disk_mb` | `0` | Recusa criar uma sandbox quando os diretórios das sandboxes ocuparem essa quantidade de megabytes. As tabelas clonadas não são contabilizadas. `0` significa sem limite. |
| `default_ttl_days` | `0` | Expiração atribuída às novas sandboxes criadas sem `ttl_days` ou `expires_at`. `0` significa sem expiração. |
| `max_age_days` | `0` | A limpeza remove sandboxes mais antigas que esse período. `0` desativa a regra de idade. |
| `max_idle_days` | `0` | A limpeza remove sandboxes sem atividade registrada (uma solicitação da sandbox ou um instantâneo) durante esse período. `0` desativa a regra de inatividade. |
| `auto_cleanup_enabled` | `1` | Executa a política de limpeza de WP-Cron a cada hora. |
| `auto_cleanup_merged` | `0` | Também executa a limpeza de ramificações incorporadas de WP-Cron. |
| `expiring_environment_notice_days` | `0` | Reúne, em cada execução da automação, as sandboxes que expiram dentro desse número de dias e as envia à ação `rudel_after_automation_expiring_environments`. |
| `auto_snapshot_before_restore` | `1` | Salva um instantâneo `pre-restore-...` antes de cada restauração. |

`wp rudel status` exibe os valores atuais.

Grave a opção com WP-CLI. As chaves omitidas mantêm seus valores padrão:

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

Ou em PHP:

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

O evento WP-Cron é agendado ou removido na próxima solicitação após uma alteração. Consulte [Automação](https://rudel.inline0.dev/pt/docs/features/automation).

## Constantes

Defina-as em `wp-config.php`, antes da linha de inicialização Rudel.

| Constante | Padrão | Significado |
|----------|---------|---------|
| `RUDEL_CLI_COMMAND` | `rudel` | Nome do comando raiz WP-CLI. |
| `RUDEL_ENVIRONMENTS_DIR` | `wp-content/rudel-environments` | Diretório que contém os diretórios das sandboxes. Os recursos do tema são sempre servidos de `/wp-content/rudel-environments/{id}/themes`, portanto outro diretório ainda precisa estar acessível nesse URL. |
| `RUDEL_RUNTIME_TABLE_PREFIX` | `rudel_` | Parte dos nomes das tabelas Rudel após o prefixo WordPress. Consulte [Estado de execução](https://rudel.inline0.dev/pt/docs/features/runtime-state). |
| `RUDEL_RUNTIME_TABLE_ENVIRONMENTS` | | Substituição do nome completo da tabela de ambientes, após o prefixo WordPress. |
| `RUDEL_RUNTIME_TABLE_WORKTREES` | | Substituição do nome completo da tabela de árvores de trabalho, após o prefixo WordPress. |
| `RUDEL_DB_DRIVER` | `auto` | Driver para acesso autônomo `Rudel\Connection`: `auto`, `mysqli` ou `pdo`. As solicitações WordPress sempre usam `$wpdb`. |
| `RUDEL_GIT_AUTHOR_NAME` | `Rudel` | Nome do autor que Rudel grava na configuração Git de um checkout quando não há `user.name`, usado para commits `wp rudel push`. |
| `RUDEL_GIT_AUTHOR_EMAIL` | `rudel@localhost` | E-mail do autor que Rudel grava quando o checkout não tem `user.email`. |

## Constantes durante uma solicitação de sandbox

Quando uma solicitação seleciona uma sandbox, a inicialização define constantes que o código pode ler. As mais úteis são:

| Constante | Valor |
|----------|-------|
| `RUDEL_ID` | ID da sandbox |
| `RUDEL_PATH` | diretório da sandbox |
| `RUDEL_TABLE_PREFIX` | prefixo da tabela da sandbox |
| `RUDEL_THEME_SLUG` | tema servido da sandbox |
| `RUDEL_HOST_URL`, `RUDEL_ENVIRONMENT_URL` | URLs do host e da sandbox |
| `RUDEL_DISABLE_EMAIL` | `true`; o envio de e-mail externo é bloqueado |

Prefira os métodos [API](https://rudel.inline0.dev/pt/docs/api), como `Rudel::id()`, a ler as constantes diretamente.

A inicialização também define `WP_DEBUG`, `WP_DEBUG_LOG`, `WP_DEBUG_DISPLAY`, `WP_TEMP_DIR`, `WP_CACHE_KEY_SALT` e as oito chaves e salts de autenticação, mas somente aquelas que `wp-config.php` ainda não definiu. Consulte [Registro de erros](https://rudel.inline0.dev/pt/docs/features/logging) e [Isolamento](https://rudel.inline0.dev/pt/docs/environments/isolation).
