コンテンツへスキップ

API

Rudel\Rudelは静的ファサードです。このページの各メソッドは、そのクラスのpublic staticメソッドです。

PHP
use Rudel\Rudel;

if ( Rudel::is_sandbox() ) {
    error_log( 'Running in sandbox ' . Rudel::id() );
}

テーブルを複製または削除するライフサイクルメソッド(create()、create_from_git()、destroy()、cleanup()、cleanup_merged())を使うには、$wpdbを伴う有効なWordPressリクエストが必要です。WordPress外でRudel::init()後に呼び出すと、RuntimeExceptionをスローします。単独利用を参照してください。

実行時コンテキスト

これらのメソッドは現在のリクエストについて説明します。サンドボックス外ではfalseまたはnullを返します。

メソッド 戻り値
is_sandbox(): bool 現在のリクエストがサンドボックス内で実行されている場合はtrue
id(): ?string 現在のサンドボックスID
path(): ?string 現在のサンドボックスディレクトリ
engine(): ?string サンドボックス内のoverlay
table_prefix(): ?string サンドボックスのテーブル接頭辞。例:wp_b65338d_
url(): ?string サンドボックスのURL。オーバーレイサンドボックスはホストのURLを共有します
exit_url(): string ホストのURL
is_email_disabled(): bool リクエストの送信メールがブロックされている場合はtrue
log_path(): ?string {sandbox directory}/debug.log
version(): ?string インストール済みのRudelバージョン
cli_command(): string WP-CLIルートコマンド。RUDEL_CLI_COMMANDが設定されていない場合はrudel

Rudel::context(): array

上記すべてを1つの配列で返します。

PHP
[
    'is_sandbox'     => true,
    'id'             => 'alpha-3be7',
    'path'           => '/var/www/html/wp-content/rudel-environments/alpha-3be7',
    'engine'         => 'overlay',
    'table_prefix'   => 'wp_b65338d_',
    'url'            => 'http://localhost/',
    'exit_url'       => 'http://localhost/',
    'email_disabled' => true,
    'log_path'       => '/var/www/html/wp-content/rudel-environments/alpha-3be7/debug.log',
    'version'        => '0.10.0',
    'cli_command'    => 'rudel',
]

Rudel::status(): array

wp rudel statusと同じ実行時の概要を配列で返します。ブートストラップの状態、現在のサンドボックス、サンドボックスのディレクトリと件数、rudel_configの値、自動化がスケジュールされているかどうかが含まれます。

サンドボックスのレコード

サンドボックスはRudel\Environmentオブジェクトとして返されます。読み取り専用の主なプロパティは、id、name、path、created_at、status、template、owner、labels、purpose、expires_at、last_used_at、theme_slug、table_prefix、clone_sourceです。メソッドにはis_protected()、get_url()、get_table_prefix()、get_size()、to_array()があります。

Rudel::all(): array

すべてのサンドボックスをEnvironmentオブジェクトの配列で返します。フィルターは指定できません。

PHP
foreach ( Rudel::all() as $sandbox ) {
    echo $sandbox->id . ' ' . $sandbox->status . "\n";
}

Rudel::get( string $id ): ?Environment

IDでサンドボックスを1つ読み込みます。見つからない場合はnullを返します。

PHP
$sandbox = Rudel::get( 'alpha-3be7' );

Rudel::environments_dir(): string

サンドボックスのディレクトリを格納するディレクトリを返します。

ライフサイクル

Rudel::create( string $name, array $options = [] ): Environment

サンドボックスを作成して返します。IDは名前に4桁の16進数文字を加えて生成されます。

PHP
$sandbox = Rudel::create( 'alpha', [
    'theme'    => 'twentytwentyfour',
    'owner'    => 'dennis',
    'labels'   => [ 'qa', 'agent' ],
    'ttl_days' => 7,
] );

オプション:

キー 意味
theme サンドボックスにコピーするテーマのスラッグ。デフォルトはホストで有効なテーマ
clone_from ホストの代わりに複製する既存サンドボックスのID
owner、purpose 自由記述のメタデータ
labels 配列またはカンマ区切り文字列
protected サンドボックスをクリーンアップ対象から除外するtrue
ttl_days 作成時点からの有効期限
expires_at 明示的な有効期限のタイムスタンプ
template レコードに保存するラベル。保存済みテンプレートは読み込みません
site_options サンドボックスのオプションテーブルに書き込むオプション名とスカラー値
skip_limits max_sandboxesとmax_disk_mbをバイパスするtrue

Rudel::create_from_git( string $remote_url, array $options = [] ): array

サンドボックスを作成し、その中に$remote_urlを複製します。create()のオプションに加え、name(デフォルトはリポジトリ名)とtype(themeまたはplugin)を受け付けます。[ 'environment' => Environment, 'git' => [...] ]を返します。複製に失敗してもサンドボックスはロールバックされず、エラーはgit.errorに返されます。Gitを参照してください。

Rudel::update( string $id, array $changes ): Environment

ライフサイクルのメタデータを更新し、更新後のサンドボックスを返します。指定できるキーはowner、labels、purpose、protected、ttl_days(現在時刻からの相対値)、expires_at、clear_expiry、name、site_optionsです。

PHP
Rudel::update( 'alpha-3be7', [ 'protected' => true, 'ttl_days' => 3 ] );

Rudel::destroy( string $id ): bool

サンドボックスのテーブルを削除し、ディレクトリとリンクされたワークツリーを取り除いて、レコードを削除します。IDが存在しない場合はfalseを返します。保護設定は確認しないため、保護されたサンドボックスも破棄されます。

Rudel::cleanup( array $options = [] ): array

有効期限、経過期間、アイドル状態のポリシーを実行します。オプション:dry_run(bool)、max_age_days、max_idle_days(ゼロ以外の場合はrudel_configを上書き)。removed、skipped、errors、reasonsを返します(IDとexpired、age、idle、protected)。クリーンアップを参照してください。

Rudel::cleanup_merged( array $options = [] ): array

リンクされたGitワークツリーのブランチがリポジトリのデフォルトブランチにマージ済みのサンドボックスを削除します。オプション:dry_run。

Rudel::touch_current_environment(): void

現在のサンドボックスのアクティビティ(last_used_at)を記録します。Rudelはサンドボックスへのリクエストごとにこれを呼び出します。

ログ

Rudel::read_log( string $id, int $lines = 50 ): array

サンドボックスのdebug.logの末尾をpath、exists、empty、total_lines、linesとして返します。

Rudel::clear_log( string $id ): array

サンドボックスのdebug.logを空にして、path、existed、clearedを返します。

スナップショット

Rudel::snapshot( string $id, string $name ): array

スナップショットを作成し、そのメタデータ(name、created_at、sandbox_id)を返します。

Rudel::restore( string $id, string $name ): void

スナップショットを復元します。デフォルトのauto_snapshot_before_restore設定では、Rudelが先にpre-restore-...スナップショットを保存します。

Rudel::snapshots( string $id ): array

スナップショットのメタデータを新しい順に一覧表示します。スナップショットを参照してください。

テンプレート

  • Rudel::save_template( string $id, string $name, string $description = '' ): array
  • Rudel::templates(): array
  • Rudel::delete_template( string $name ): bool

保存済みテンプレートはファイルのコピーのみです。APIやコマンドからテンプレートを使ってサンドボックスを作成することはできません。テンプレートを参照してください。

Git

Rudel::push( string $id, string $remote_url = '', string $message = 'Update from Rudel', string $subdir = '' ): ?string

サンドボックスディレクトリ内のチェックアウトをブランチrudel/{id}にコミットしてプッシュします。$remote_urlと$subdirは、デフォルトでサンドボックスに保存された値を使います。コミットSHAを返し、変更がない場合はnullを返します。

自動化

  • Rudel::run_automation(): arrayはスケジュール済みの自動化タスクを今すぐ実行します。
  • Rudel::run_scheduled_cleanup(): arrayも同じ処理を行います。

自動化を参照してください。

フックとコマンド一覧

  • Rudel::hooks(): arrayはフック名をキーとする、ドキュメント化されたフック一覧を返します。フックを参照してください。
  • Rudel::cli_command_map(): arrayは、すべてのwp rudelコマンドと、その背後にあるPHPメソッドのシリアライズ可能な説明を返します。
  • Rudel::resolve_cli_command( $path, array $args = [], array $assoc_args = [] ): arrayは、解析済みのコマンドを実行せずに実行計画へ変換します。
PHP
$plan = Rudel::resolve_cli_command( 'wp rudel destroy', [ 'alpha-3be7' ] );
// $plan['callable']           => 'Rudel\Rudel::destroy'
// $plan['arguments']          => [ 'alpha-3be7' ]
// $plan['needs_confirmation'] => true

ほとんどの計画ではphpトランスポートを使います。logs --followはshell計画に解決され、tail -fを実行します。

単独利用の初期化

Rudel::init( Connection $connection, array $context = [] ): void

WordPress外で使うため、ファサードを直接MySQL接続に向けます。$contextはenvironments_dirを受け付けます。

PHP
use Rudel\Connection;
use Rudel\Rudel;

Rudel::init(
    new Connection( '127.0.0.1', 'wordpress', 'root', 'root', 'wp_' ),
    [ 'environments_dir' => '/var/www/html/wp-content/rudel-environments' ]
);
  • Rudel::ensure_schema(): voidは現在の接続用にRudelテーブルを作成します。
  • Rudel::reset(): voidは単独接続とキャッシュ状態をクリアします。