
# 구성

Rudel 구성에는 두 가지 유형이 있습니다. `rudel_config` WordPress 옵션에 저장되는 설정과 `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/ko/docs/features/automation)를 참조하세요.

## 상수

Rudel 부트스트랩 줄 위에 `wp-config.php`을 정의하세요.

| 상수 | 기본값 | 의미 |
|----------|---------|---------|
| `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_` | WordPress 접두사 뒤에 오는 Rudel 테이블 이름의 일부입니다. [런타임 상태](https://rudel.inline0.dev/ko/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` | 체크아웃에 `user.name`이 없을 때 Rudel이 체크아웃의 Git 구성에 기록하는 작성자 이름으로, `wp rudel push` 커밋에 사용됩니다. |
| `RUDEL_GIT_AUTHOR_EMAIL` | `rudel@localhost` | 체크아웃에 `user.email`이 없을 때 Rudel이 기록하는 작성자 이메일입니다. |

## 샌드박스 요청 내부의 상수

요청에서 샌드박스를 선택하면 부트스트랩이 코드에서 읽을 수 있는 상수를 정의합니다. 가장 유용한 항목은 다음과 같습니다:

| 상수 | 값 |
|----------|-------|
| `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/ko/docs/api) 메서드(예: `Rudel::id()`)를 우선 사용하세요.

부트스트랩은 `WP_DEBUG`, `WP_DEBUG_LOG`, `WP_DEBUG_DISPLAY`, `WP_TEMP_DIR`, `WP_CACHE_KEY_SALT`와 인증 키 및 솔트 8개도 정의하지만, `wp-config.php`가 아직 정의하지 않은 항목만 정의합니다. [오류 로깅](https://rudel.inline0.dev/ko/docs/features/logging) 및 [격리](https://rudel.inline0.dev/ko/docs/environments/isolation)를 참조하세요.
