
# Конфигурация

Rudel поддерживает два вида конфигурации: настройки в параметре WordPress `rudel_config` и константы, заданные в `wp-config.php`.

## Параметр `rudel_config`

Настройки хранятся в одном массиве в `wp_options` под ключом `rudel_config`. Пока параметр не будет записан, для каждого ключа используется значение по умолчанию. Неизвестные ключи игнорируются, значения хранятся как целые числа.

| Ключ | По умолчанию | Значение |
|-----|---------|---------|
| `max_sandboxes` | `0` | Отказаться от создания песочницы, если их количество достигло этого значения. `0` означает отсутствие ограничения. |
| `max_disk_mb` | `0` | Отказаться от создания песочницы, если каталоги песочниц занимают столько мегабайт. Клонированные таблицы не учитываются. `0` означает отсутствие ограничения. |
| `default_ttl_days` | `0` | Срок истечения для новых песочниц, созданных без `ttl_days` или `expires_at`. `0` означает отсутствие срока истечения. |
| `max_age_days` | `0` | Очистка удаляет песочницы старше этого срока. `0` отключает правило возраста. |
| `max_idle_days` | `0` | Очистка удаляет песочницы, для которых за этот период не было зарегистрировано действий (запроса к песочнице или снимка). `0` отключает правило бездействия. |
| `auto_cleanup_enabled` | `1` | Каждый час выполнять политику очистки из WP-Cron. |
| `auto_cleanup_merged` | `0` | Также выполнять очистку веток слияния из WP-Cron. |
| `expiring_environment_notice_days` | `0` | При каждом запуске автоматизации собирать песочницы, срок действия которых истекает в ближайшие дни, и передавать их действию `rudel_after_automation_expiring_environments`. |
| `auto_snapshot_before_restore` | `1` | Перед каждым восстановлением сохранять снимок `pre-restore-...`. |

`wp rudel status` выводит текущие значения.

Запишите параметр с помощью WP-CLI. Для пропущенных ключей сохраняются значения по умолчанию:

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

Или из PHP:

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

Событие WP-Cron будет запланировано или удалено при следующем запросе после изменения. См. [Автоматизация](https://rudel.inline0.dev/ru/docs/features/automation).

## Константы

Определите их в `wp-config.php` перед строкой bootstrap Rudel.

| Константа | По умолчанию | Значение |
|----------|---------|---------|
| `RUDEL_CLI_COMMAND` | `rudel` | Имя корневой команды WP-CLI. |
| `RUDEL_ENVIRONMENTS_DIR` | `wp-content/rudel-environments` | Каталог, в котором находятся каталоги песочниц. Ресурсы темы всегда обслуживаются из `/wp-content/rudel-environments/{id}/themes`, поэтому другой каталог все равно должен быть доступен по этому URL. |
| `RUDEL_RUNTIME_TABLE_PREFIX` | `rudel_` | Часть имен таблиц Rudel после префикса WordPress. См. [Состояние среды выполнения](https://rudel.inline0.dev/ru/docs/features/runtime-state). |
| `RUDEL_RUNTIME_TABLE_ENVIRONMENTS` | | Переопределение полного имени таблицы сред после префикса WordPress. |
| `RUDEL_RUNTIME_TABLE_WORKTREES` | | Переопределение полного имени таблицы рабочих деревьев после префикса WordPress. |
| `RUDEL_DB_DRIVER` | `auto` | Драйвер для автономного доступа к `Rudel\Connection`: `auto`, `mysqli` или `pdo`. Запросы WordPress всегда используют `$wpdb`. |
| `RUDEL_GIT_AUTHOR_NAME` | `Rudel` | Имя автора, которое Rudel записывает в конфигурацию Git рабочей копии, если там нет `user.name`; используется для коммитов `wp rudel push`. |
| `RUDEL_GIT_AUTHOR_EMAIL` | `rudel@localhost` | Адрес электронной почты автора, который Rudel записывает, если в рабочей копии нет `user.email`. |

## Константы в запросе к песочнице

Когда запрос выбирает песочницу, bootstrap определяет константы, доступные для чтения коду. Самые полезные из них:

| Константа | Значение |
|----------|-------|
| `RUDEL_ID` | ID песочницы |
| `RUDEL_PATH` | каталог песочницы |
| `RUDEL_TABLE_PREFIX` | префикс таблиц песочницы |
| `RUDEL_THEME_SLUG` | тема, обслуживаемая из песочницы |
| `RUDEL_HOST_URL`, `RUDEL_ENVIRONMENT_URL` | URL хоста и песочницы |
| `RUDEL_DISABLE_EMAIL` | `true`; исходящая почта заблокирована |

Предпочтительнее использовать методы [API](https://rudel.inline0.dev/ru/docs/api), например `Rudel::id()`, вместо прямого чтения констант.

Bootstrap также определяет `WP_DEBUG`, `WP_DEBUG_LOG`, `WP_DEBUG_DISPLAY`, `WP_TEMP_DIR`, `WP_CACHE_KEY_SALT`, а также восемь ключей и солей аутентификации, но только те из них, которые еще не определены в `wp-config.php`. См. [Журналирование ошибок](https://rudel.inline0.dev/ru/docs/features/logging) и [Изоляция](https://rudel.inline0.dev/ru/docs/environments/isolation).
