
# 作成

## ホストから作成する

```bash
wp rudel create --name=alpha --theme=twentytwentyfour
```

Rudelは名前に4桁の16進文字を加えてIDを生成し（例：`alpha-3be7`）、ホストのWordPressテーブルを生成したテーブルプレフィックスに複製し、選択したテーマをサンドボックスディレクトリにコピーして、ホストのWordPressデータベースにサンドボックスを記録します。サンドボックスの`siteurl`と`home`には、ホストのURLが引き継がれます。

`--theme`を省略すると、Rudelはホストサイトで有効なテーマを使います。テーマはホストにインストールされている必要があります。子テーマを選ぶと、親テーマも一緒にコピーされます。

ホストのテーブルプレフィックスを持つすべてのテーブルがコピーされます。Rudel独自のテーブルを除き、`users`や`usermeta`も含まれます。現行リリースでは、すでに存在するサンドボックスのテーブルも含まれるため、新しいサンドボックスを作るたびにサイズが大きくなります。[issue #3](https://github.com/inline0/rudel/issues/3)を参照してください。

## 別のサンドボックスから作成する

```bash
wp rudel create --name=feature-b --clone-from=alpha-3be7
```

新しいサンドボックスには、ソースサンドボックスのプレフィックスを持つすべてのテーブル（ソースのスナップショットテーブルを含む）とテーマのコピーが引き継がれます。スナップショットのディレクトリはコピーされないため、それらのテーブルは新しいサンドボックスでは使われません（[issue #12](https://github.com/inline0/rudel/issues/12)）。ソースのテーマディレクトリがGitリポジトリの場合、Rudelは単純なコピーではなく、ブランチ`rudel/{new-id}`にリンクされたworktreeを作成します。新しいレコードにはソースIDが記録されます。

## ライフサイクルのメタデータ

クリーンアップと所有者管理のために、サンドボックスにメタデータを設定できます。

```bash
wp rudel create \
  --name=feature-a \
  --owner=dennis \
  --labels=agent,qa \
  --purpose="Test checkout changes" \
  --ttl-days=7
```

自動クリーンアップでサンドボックスを削除させない場合は、`--protected`を使います。[ポリシー](https://rudel.inline0.dev/ja/docs/features/policy)を参照してください。

## 上限

`max_sandboxes`または`max_disk_mb`の設定に達すると、作成は失敗します。どちらも既定値は`0`で、上限なしを意味します。[設定](https://rudel.inline0.dev/ja/docs/configuration)を参照してください。

## Gitチェックアウト

```bash
wp rudel create --name=feature-a --git=https://example.test/my-theme.git
```

Rudelはサンドボックスを作成し、サンドボックスディレクトリ内の`themes/my-theme`にリモートをクローンして、チェックアウトをブランチ`rudel/{id}`に切り替えます。代わりに`plugins/my-theme`へクローンするには、`--type=plugin`を追加します。クローンに失敗してもサンドボックスは残り、警告が表示されます。サンドボックスがこのチェックアウトから何を配信するかは[Git](https://rudel.inline0.dev/ja/docs/features/git)を参照してください。

## ディレクトリ構成

```text
wp-content/rudel-environments/{id}/
  themes/       copied theme, plus any Git checkout
  snapshots/    snapshot metadata and theme copies
  logs/ metadata/ tmp/
  wp-cli.yml
  debug.log     when debug logging is active
```
