API
Rudel\Rudel adalah facade statis. Setiap metode di halaman ini merupakan metode statis publik dari kelas tersebut.
use Rudel\Rudel;
if ( Rudel::is_sandbox() ) {
error_log( 'Running in sandbox ' . Rudel::id() );
}
Metode siklus hidup yang mengkloning atau menghapus tabel (create(), create_from_git(), destroy(), cleanup(), cleanup_merged()) memerlukan permintaan WordPress yang aktif dengan $wpdb. Metode tersebut melempar RuntimeException jika dipanggil setelah Rudel::init() di luar WordPress. Lihat Penggunaan Mandiri.
Konteks runtime
Metode ini menjelaskan permintaan saat ini. Di luar sandbox, metode tersebut mengembalikan false atau null.
| Metode | Mengembalikan |
|---|---|
is_sandbox(): bool |
true saat permintaan saat ini berjalan di dalam sandbox |
id(): ?string |
ID sandbox saat ini |
path(): ?string |
direktori sandbox saat ini |
engine(): ?string |
overlay di dalam sandbox |
table_prefix(): ?string |
prefiks tabel sandbox, misalnya wp_b65338d_ |
url(): ?string |
URL sandbox; sandbox overlay berbagi URL host |
exit_url(): string |
URL host |
is_email_disabled(): bool |
true saat email keluar diblokir untuk permintaan tersebut |
log_path(): ?string |
{sandbox directory}/debug.log |
version(): ?string |
versi Rudel yang terpasang |
cli_command(): string |
perintah root WP-CLI, kecuali jika RUDEL_CLI_COMMAND ditetapkan sebagai rudel |
Rudel::context(): array
Mengembalikan semua hal di atas dalam satu array:
[
'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
Mengembalikan ringkasan runtime yang sama dengan wp rudel status dalam bentuk array: status bootstrap, sandbox saat ini, direktori dan jumlah sandbox, nilai rudel_config serta apakah otomasi dijadwalkan.
Catatan sandbox
Sandbox dikembalikan sebagai objek Rudel\Environment. Properti hanya-baca yang berguna mencakup id, name, path, created_at, status, template, owner, labels, purpose, expires_at, last_used_at, theme_slug, table_prefix, dan clone_source. Metodenya mencakup is_protected(), get_url(), get_table_prefix(), get_size(), dan to_array().
Rudel::all(): array
Mengembalikan setiap sandbox sebagai array objek Environment. Tidak ada filter yang digunakan.
foreach ( Rudel::all() as $sandbox ) {
echo $sandbox->id . ' ' . $sandbox->status . "\n";
}
Rudel::get( string $id ): ?Environment
Memuat satu sandbox berdasarkan ID, atau mengembalikan null.
$sandbox = Rudel::get( 'alpha-3be7' );
Rudel::environments_dir(): string
Mengembalikan direktori tempat direktori sandbox disimpan.
Siklus hidup
Rudel::create( string $name, array $options = [] ): Environment
Membuat sandbox dan mengembalikannya. ID dibuat dari nama ditambah empat karakter heksadesimal.
$sandbox = Rudel::create( 'alpha', [
'theme' => 'twentytwentyfour',
'owner' => 'dennis',
'labels' => [ 'qa', 'agent' ],
'ttl_days' => 7,
] );
Opsi:
| Kunci | Arti |
|---|---|
theme |
slug tema yang akan disalin ke sandbox; secara default menggunakan tema aktif host |
clone_from |
ID sandbox yang sudah ada untuk dikloning sebagai pengganti host |
owner, purpose |
metadata teks bebas |
labels |
array atau string yang dipisahkan koma |
protected |
true untuk mengecualikan sandbox dari pembersihan |
ttl_days |
masa berlaku relatif terhadap waktu pembuatan |
expires_at |
stempel waktu kedaluwarsa eksplisit |
template |
label yang disimpan pada catatan; label ini tidak memuat templat tersimpan |
site_options |
nama opsi dan nilai skalar yang ditulis ke tabel opsi sandbox |
skip_limits |
true untuk melewati max_sandboxes dan max_disk_mb |
Rudel::create_from_git( string $remote_url, array $options = [] ): array
Membuat sandbox, lalu mengkloning $remote_url ke dalamnya. Menerima opsi create() ditambah name (secara default nama repositori) dan type (theme atau plugin). Mengembalikan [ 'environment' => Environment, 'git' => [...] ]. Kegagalan kloning tidak membatalkan pembuatan sandbox; kesalahan dikembalikan dalam git.error. Lihat Git.
Rudel::update( string $id, array $changes ): Environment
Memperbarui metadata siklus hidup dan mengembalikan sandbox yang telah diperbarui. Kunci yang diterima mencakup owner, labels, purpose, protected, ttl_days (relatif terhadap waktu sekarang), expires_at, clear_expiry, name, dan site_options.
Rudel::update( 'alpha-3be7', [ 'protected' => true, 'ttl_days' => 3 ] );
Rudel::destroy( string $id ): bool
Menghapus tabel sandbox, direktori dan worktree tertautnya, lalu menghapus catatannya. Mengembalikan false jika ID tidak ada. Perlindungan tidak diperiksa: sandbox yang dilindungi juga akan dihancurkan.
Rudel::cleanup( array $options = [] ): array
Menjalankan kebijakan kedaluwarsa, usia, dan tidak aktif. Opsi: dry_run (bool), max_age_days, dan max_idle_days (mengganti rudel_config jika bukan nol). Mengembalikan removed, skipped, errors, dan reasons (ID ke expired, age, idle, atau protected). Lihat Pembersihan.
Rudel::cleanup_merged( array $options = [] ): array
Menghapus sandbox yang cabang worktree Git tertautnya telah digabung ke cabang default repositori. Opsi: dry_run.
Rudel::touch_current_environment(): void
Mencatat aktivitas (last_used_at) untuk sandbox saat ini. Rudel memanggilnya pada setiap permintaan sandbox.
Log
Rudel::read_log( string $id, int $lines = 50 ): array
Mengembalikan baris terakhir debug.log sandbox sebagai path, exists, empty, total_lines, dan lines.
Rudel::clear_log( string $id ): array
Mengosongkan debug.log sandbox dan mengembalikan path, existed, dan cleared.
Snapshot
Rudel::snapshot( string $id, string $name ): array
Membuat snapshot dan mengembalikan metadatanya (name, created_at, sandbox_id).
Rudel::restore( string $id, string $name ): void
Memulihkan snapshot. Dengan pengaturan default auto_snapshot_before_restore, Rudel terlebih dahulu menyimpan snapshot pre-restore-....
Rudel::snapshots( string $id ): array
Mencantumkan metadata snapshot, dari yang terbaru. Lihat Snapshot.
Templat
Rudel::save_template( string $id, string $name, string $description = '' ): arrayRudel::templates(): arrayRudel::delete_template( string $name ): bool
Templat tersimpan hanyalah salinan berkas. Tidak ada API atau perintah yang membuat sandbox dari templat tersebut. Lihat Templat.
Git
Rudel::push( string $id, string $remote_url = '', string $message = 'Update from Rudel', string $subdir = '' ): ?string
Melakukan commit dan push checkout di dalam direktori sandbox ke cabang rudel/{id}. Secara default, $remote_url dan $subdir menggunakan nilai yang tersimpan di sandbox. Mengembalikan SHA commit, atau null jika tidak ada perubahan.
Otomasi
Rudel::run_automation(): arraymenjalankan tugas otomasi terjadwal sekarang.Rudel::run_scheduled_cleanup(): arraymelakukan hal yang sama.
Lihat Otomasi.
Hook dan katalog perintah
Rudel::hooks(): arraymengembalikan katalog hook yang didokumentasikan, berdasarkan nama hook. Lihat Hook.Rudel::cli_command_map(): arraymengembalikan deskripsi serialisasi setiap perintahwp rudeldan metode PHP yang mendasarinya.Rudel::resolve_cli_command( $path, array $args = [], array $assoc_args = [] ): arraymengubah satu perintah yang diurai menjadi rencana eksekusi tanpa menjalankannya.
$plan = Rudel::resolve_cli_command( 'wp rudel destroy', [ 'alpha-3be7' ] );
// $plan['callable'] => 'Rudel\Rudel::destroy'
// $plan['arguments'] => [ 'alpha-3be7' ]
// $plan['needs_confirmation'] => true
Sebagian besar rencana menggunakan transport php. logs --follow menghasilkan rencana shell yang berjalan tail -f.
Inisialisasi mandiri
Rudel::init( Connection $connection, array $context = [] ): void
Menghubungkan facade ke koneksi langsung MySQL untuk digunakan di luar WordPress. $context menerima environments_dir.
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(): voidmembuat tabel Rudel untuk koneksi aktif.Rudel::reset(): voidmenghapus koneksi mandiri dan status cache.