
# 設定

Rudelには2種類の設定があります。`rudel_config`WordPressオプションに保存される設定と、`wp-config.php`で定義する定数です。

## `rudel_config`オプション

設定は`wp_options`の`rudel_config`にある1つの配列に保存されます。オプションに値が書き込まれるまでは、すべてのキーで既定値が使われます。不明なキーは無視され、値は整数として保存されます。

| キー | 既定値 | 説明 |
|-----|---------|---------|
| `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/ja/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/ja/docs/features/runtime-state)を参照してください。 |
| `RUDEL_RUNTIME_TABLE_ENVIRONMENTS` | | WordPressプレフィックスの後に続く、環境テーブルの完全な名前の上書き値。 |
| `RUDEL_RUNTIME_TABLE_WORKTREES` | | WordPressプレフィックスの後に続く、worktreesテーブルの完全な名前の上書き値。 |
| `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`。送信メールはブロックされます |

定数を直接読むより、`Rudel::id()`などの[API](https://rudel.inline0.dev/ja/docs/api)メソッドを使ってください。

ブートストラップは`WP_DEBUG`、`WP_DEBUG_LOG`、`WP_DEBUG_DISPLAY`、`WP_TEMP_DIR`、`WP_CACHE_KEY_SALT`と8つの認証キーおよびソルトも定義します。ただし、`wp-config.php`がまだ定義していないものに限ります。[エラーログ](https://rudel.inline0.dev/ja/docs/features/logging)と[分離](https://rudel.inline0.dev/ja/docs/environments/isolation)を参照してください。
