
# 생성

## 호스트에서 만들기

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

Rudel은 이름에 16진수 문자 4개를 더해 ID를 생성하고(예: `alpha-3be7`), 호스트의 WordPress 테이블을 생성된 테이블 접두사로 복제하며, 선택한 테마를 샌드박스 디렉터리에 복사하고, 호스트 WordPress 데이터베이스에 샌드박스 레코드를 기록합니다. 샌드박스의 `siteurl`와 `home`는 호스트 URL을 유지합니다.

`--theme`을 생략하면 Rudel은 호스트 사이트의 활성 테마를 사용합니다. 해당 테마가 호스트에 설치되어 있어야 합니다. 자식 테마를 선택하면 부모 테마도 함께 가져옵니다.

호스트 테이블 접두사가 붙은 모든 테이블을 복사합니다. 여기에는 `users`와 `usermeta`이 포함되지만 Rudel 자체 테이블은 제외됩니다. 현재 릴리스에서는 이미 존재하는 샌드박스의 테이블도 포함되므로, 새 샌드박스는 만들 때마다 더 커집니다. [문제 #3](https://github.com/inline0/rudel/issues/3)을 참조하세요.

## 다른 샌드박스에서 만들기

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

새 샌드박스에는 원본 샌드박스의 접두사가 붙은 모든 테이블(원본의 스냅샷 테이블 포함)과 테마가 복사됩니다. 스냅샷 디렉터리는 복사되지 않으므로 해당 테이블은 새 샌드박스에서 사용되지 않습니다([문제 #12](https://github.com/inline0/rudel/issues/12)). 원본 테마 디렉터리가 Git 저장소이면 Rudel은 단순히 복사하는 대신 브랜치 `rudel/{new-id}`에 연결된 워크트리를 만듭니다. 새 레코드에는 원본 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/ko/docs/features/policy)을 참조하세요.

## 제한

`max_sandboxes` 또는 `max_disk_mb` 설정값에 도달하면 생성이 실패합니다. 두 설정의 기본값은 `0`이며, 이는 제한이 없음을 의미합니다. [구성](https://rudel.inline0.dev/ko/docs/configuration)을 참조하세요.

## Git 체크아웃

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

Rudel은 샌드박스를 만들고, 샌드박스 디렉터리 안의 `themes/my-theme`에 원격 저장소를 복제한 다음 체크아웃을 브랜치 `rudel/{id}`로 전환합니다. 대신 `--type=plugin`을 추가하면 `plugins/my-theme`에 복제합니다. 복제에 실패해도 샌드박스는 그대로 남고 경고가 출력됩니다. 해당 체크아웃에서 샌드박스가 제공하는 항목은 [Git](https://rudel.inline0.dev/ko/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
```
