Lewati ke konten

API

Rudel\Rudel adalah facade statis. Setiap metode di halaman ini merupakan metode statis publik dari kelas tersebut.

PHP
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:

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

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.

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

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

Memuat satu sandbox berdasarkan ID, atau mengembalikan null.

PHP
$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.

PHP
$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.

PHP
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 = '' ): array
  • Rudel::templates(): array
  • Rudel::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(): array menjalankan tugas otomasi terjadwal sekarang.
  • Rudel::run_scheduled_cleanup(): array melakukan hal yang sama.

Lihat Otomasi.

Hook dan katalog perintah

  • Rudel::hooks(): array mengembalikan katalog hook yang didokumentasikan, berdasarkan nama hook. Lihat Hook.
  • Rudel::cli_command_map(): array mengembalikan deskripsi serialisasi setiap perintah wp rudel dan metode PHP yang mendasarinya.
  • Rudel::resolve_cli_command( $path, array $args = [], array $assoc_args = [] ): array mengubah satu perintah yang diurai menjadi rencana eksekusi tanpa menjalankannya.
PHP
$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.

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 membuat tabel Rudel untuk koneksi aktif.
  • Rudel::reset(): void menghapus koneksi mandiri dan status cache.