
# Konfigurasi

Rudel memiliki dua jenis konfigurasi: pengaturan yang disimpan dalam opsi `rudel_config` WordPress, dan konstanta yang Anda definisikan di `wp-config.php`.

## Opsi `rudel_config`

Pengaturan disimpan dalam satu array di `wp_options` dengan kunci `rudel_config`. Sebelum opsi tersebut ditulis, setiap kunci menggunakan nilai defaultnya. Kunci yang tidak dikenal diabaikan dan nilai disimpan sebagai bilangan bulat.

| Kunci | Default | Arti |
|-----|---------|---------|
| `max_sandboxes` | `0` | Menolak pembuatan sandbox jika jumlahnya mencapai angka ini. `0` berarti tanpa batas. |
| `max_disk_mb` | `0` | Menolak pembuatan sandbox jika penggunaan direktori sandbox mencapai jumlah megabita ini. Tabel hasil kloning tidak dihitung. `0` berarti tanpa batas. |
| `default_ttl_days` | `0` | Masa berlaku untuk sandbox baru yang dibuat tanpa `ttl_days` atau `expires_at`. `0` berarti tanpa kedaluwarsa. |
| `max_age_days` | `0` | Pembersihan menghapus sandbox yang lebih lama dari nilai ini. `0` menonaktifkan aturan usia. |
| `max_idle_days` | `0` | Pembersihan menghapus sandbox tanpa aktivitas tercatat (permintaan sandbox atau snapshot) selama jangka waktu ini. `0` menonaktifkan aturan tidak aktif. |
| `auto_cleanup_enabled` | `1` | Menjalankan kebijakan pembersihan dari WP-Cron setiap jam. |
| `auto_cleanup_merged` | `0` | Juga menjalankan pembersihan cabang yang telah digabung dari WP-Cron. |
| `expiring_environment_notice_days` | `0` | Mengumpulkan sandbox yang akan kedaluwarsa dalam jumlah hari ini pada setiap proses otomasi, lalu meneruskannya ke tindakan `rudel_after_automation_expiring_environments`. |
| `auto_snapshot_before_restore` | `1` | Menyimpan snapshot `pre-restore-...` sebelum setiap pemulihan. |

`wp rudel status` mencetak nilai saat ini.

Tulis opsi dengan WP-CLI. Kunci yang tidak dicantumkan akan tetap menggunakan nilai defaultnya:

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

Atau dari PHP:

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

Peristiwa WP-Cron dijadwalkan atau dihapus pada permintaan berikutnya setelah perubahan. Lihat [Otomasi](https://rudel.inline0.dev/id/docs/features/automation).

## Konstanta

Definisikan ini di `wp-config.php` di atas baris bootstrap Rudel.

| Konstanta | Default | Arti |
|----------|---------|---------|
| `RUDEL_CLI_COMMAND` | `rudel` | Nama perintah WP-CLI root. |
| `RUDEL_ENVIRONMENTS_DIR` | `wp-content/rudel-environments` | Direktori tempat direktori sandbox disimpan. Aset tema selalu disajikan dari `/wp-content/rudel-environments/{id}/themes`, jadi direktori lain harus tetap dapat diakses melalui URL tersebut. |
| `RUDEL_RUNTIME_TABLE_PREFIX` | `rudel_` | Bagian dari nama tabel Rudel setelah prefiks WordPress. Lihat [Status Runtime](https://rudel.inline0.dev/id/docs/features/runtime-state). |
| `RUDEL_RUNTIME_TABLE_ENVIRONMENTS` | | Pengganti nama lengkap untuk tabel environments, setelah prefiks WordPress. |
| `RUDEL_RUNTIME_TABLE_WORKTREES` | | Pengganti nama lengkap untuk tabel worktrees, setelah prefiks WordPress. |
| `RUDEL_DB_DRIVER` | `auto` | Driver untuk akses mandiri `Rudel\Connection`: `auto`, `mysqli`, atau `pdo`. Permintaan WordPress selalu menggunakan `$wpdb`. |
| `RUDEL_GIT_AUTHOR_NAME` | `Rudel` | Nama penulis yang ditulis Rudel ke konfigurasi Git checkout jika tidak memiliki `user.name`, digunakan untuk commit `wp rudel push`. |
| `RUDEL_GIT_AUTHOR_EMAIL` | `rudel@localhost` | Email penulis yang ditulis Rudel jika checkout tidak memiliki `user.email`. |

## Konstanta dalam permintaan sandbox

Saat permintaan memilih sandbox, bootstrap menetapkan konstanta yang dapat dibaca oleh kode. Yang paling berguna adalah:

| Konstanta | Nilai |
|----------|-------|
| `RUDEL_ID` | ID sandbox |
| `RUDEL_PATH` | direktori sandbox |
| `RUDEL_TABLE_PREFIX` | prefiks tabel sandbox |
| `RUDEL_THEME_SLUG` | tema yang disajikan dari sandbox |
| `RUDEL_HOST_URL`, `RUDEL_ENVIRONMENT_URL` | URL host dan sandbox |
| `RUDEL_DISABLE_EMAIL` | `true`; email keluar diblokir |

Utamakan metode [API](https://rudel.inline0.dev/id/docs/api) seperti `Rudel::id()` daripada membaca konstanta secara langsung.

Bootstrap juga menetapkan `WP_DEBUG`, `WP_DEBUG_LOG`, `WP_DEBUG_DISPLAY`, `WP_TEMP_DIR`, `WP_CACHE_KEY_SALT`, serta delapan kunci dan salt autentikasi, tetapi hanya yang belum ditetapkan oleh `wp-config.php`. Lihat [Pencatatan Kesalahan](https://rudel.inline0.dev/id/docs/features/logging) dan [Isolasi](https://rudel.inline0.dev/id/docs/environments/isolation).
