API
Rudel\Rudel este o fațadă statică. Fiecare metodă de pe această pagină este o metodă statică publică a acelei clase.
use Rudel\Rudel;
if ( Rudel::is_sandbox() ) {
error_log( 'Running in sandbox ' . Rudel::id() );
}
Metodele ciclului de viață care clonează sau șterg tabele (create(), create_from_git(), destroy(), cleanup(), cleanup_merged()) necesită o cerere WordPress activă cu $wpdb. Dacă sunt apelate după Rudel::init() în afara WordPress, aruncă o RuntimeException. Consultați Utilizare autonomă.
Contextul de execuție
Aceste metode descriu cererea curentă. În afara unui mediu izolat, returnează false sau null.
| Metodă | Returnează |
|---|---|
is_sandbox(): bool |
true când cererea curentă rulează într-un mediu izolat |
id(): ?string |
ID-ul mediului izolat curent |
path(): ?string |
directorul mediului izolat curent |
engine(): ?string |
overlay într-un mediu izolat |
table_prefix(): ?string |
prefixul tabelelor mediului izolat, de exemplu wp_b65338d_ |
url(): ?string |
URL al mediului izolat; mediile suprapuse partajează URL gazdei |
exit_url(): string |
URL gazdei |
is_email_disabled(): bool |
true când trimiterea de e-mailuri externe este blocată pentru cerere |
log_path(): ?string |
{sandbox directory}/debug.log |
version(): ?string |
versiunea Rudel instalată |
cli_command(): string |
comanda rădăcină WP-CLI, rudel dacă nu este setat RUDEL_CLI_COMMAND |
Rudel::context(): array
Returnează toate cele de mai sus într-un singur tablou:
[
'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
Returnează același rezumat al execuției ca wp rudel status, sub formă de tablou: starea inițializării, mediul izolat curent, directorul și numărul mediilor izolate, valorile rudel_config și dacă automatizarea este programată.
Înregistrări ale mediilor izolate
Mediile izolate sunt returnate ca obiecte Rudel\Environment. Proprietățile utile, doar pentru citire, includ id, name, path, created_at, status, template, owner, labels, purpose, expires_at, last_used_at, theme_slug, table_prefix și clone_source. Metodele includ is_protected(), get_url(), get_table_prefix(), get_size() și to_array().
Rudel::all(): array
Returnează toate mediile izolate sub forma unui tablou de obiecte Environment. Nu acceptă filtre.
foreach ( Rudel::all() as $sandbox ) {
echo $sandbox->id . ' ' . $sandbox->status . "\n";
}
Rudel::get( string $id ): ?Environment
Încarcă un mediu izolat după ID sau returnează null.
$sandbox = Rudel::get( 'alpha-3be7' );
Rudel::environments_dir(): string
Returnează directorul care conține directoarele mediilor izolate.
Ciclul de viață
Rudel::create( string $name, array $options = [] ): Environment
Creează un mediu izolat și îl returnează. ID-ul este generat din nume și patru caractere hexazecimale.
$sandbox = Rudel::create( 'alpha', [
'theme' => 'twentytwentyfour',
'owner' => 'dennis',
'labels' => [ 'qa', 'agent' ],
'ttl_days' => 7,
] );
Opțiuni:
| Cheie | Semnificație |
|---|---|
theme |
slugul temei de copiat în mediul izolat; implicit, tema activă a gazdei |
clone_from |
ID-ul unui mediu izolat existent de clonat în locul gazdei |
owner, purpose |
metadate în text liber |
labels |
tablou sau șir separat prin virgule |
protected |
true pentru a exclude mediul izolat de la curățare |
ttl_days |
expirare calculată de la momentul creării |
expires_at |
marcaj temporal explicit pentru expirare |
template |
etichetă stocată în înregistrare; nu încarcă un șablon salvat |
site_options |
nume de opțiuni și valori scalare scrise în tabelul de opțiuni al mediului izolat |
skip_limits |
true pentru a omite max_sandboxes și max_disk_mb |
Rudel::create_from_git( string $remote_url, array $options = [] ): array
Creează un mediu izolat, apoi clonează $remote_url în el. Acceptă opțiunile create(), plus name (implicit, numele depozitului) și type (theme sau plugin). Returnează [ 'environment' => Environment, 'git' => [...] ]. Dacă clonarea eșuează, mediul izolat nu este anulat; eroarea este returnată în git.error. Consultați Clonare dintr-un depozitGit.
Rudel::update( string $id, array $changes ): Environment
Actualizează metadatele ciclului de viață și returnează mediul izolat reîmprospătat. Printre cheile acceptate se numără owner, labels, purpose, protected, ttl_days (raportată la momentul actual), expires_at, clear_expiry, name și site_options.
Rudel::update( 'alpha-3be7', [ 'protected' => true, 'ttl_days' => 3 ] );
Rudel::destroy( string $id ): bool
Șterge tabelele mediului izolat, elimină directorul și worktree-urile asociate și șterge înregistrarea acestuia. Returnează false dacă ID-ul nu există. Nu verifică protecția: sunt șterse și mediile izolate protejate.
Rudel::cleanup( array $options = [] ): array
Aplică politicile de expirare, vechime și inactivitate. Opțiuni: dry_run (bool), max_age_days și max_idle_days (suprascriu rudel_config când valoarea este nenulă). Returnează removed, skipped, errors și reasons (ID către expired, age, idle sau protected). Consultați Curățare.
Rudel::cleanup_merged( array $options = [] ): array
Elimină mediile izolate ale căror ramuri worktree Git asociate au fost integrate în ramura implicită a depozitului. Opțiune: dry_run.
Rudel::touch_current_environment(): void
Înregistrează activitatea (last_used_at) pentru mediul izolat curent. Rudel o apelează la fiecare cerere dintr-un mediu izolat.
Jurnale
Rudel::read_log( string $id, int $lines = 50 ): array
Returnează ultimele rânduri din debug.log mediului izolat sub formă de path, exists, empty, total_lines și lines.
Rudel::clear_log( string $id ): array
Golește debug.log mediului izolat și returnează path, existed și cleared.
Instantanee
Rudel::snapshot( string $id, string $name ): array
Creează un instantaneu și îi returnează metadatele (name, created_at, sandbox_id).
Rudel::restore( string $id, string $name ): void
Restaurează un instantaneu. Cu setarea implicită auto_snapshot_before_restore, Rudel salvează mai întâi un instantaneu pre-restore-....
Rudel::snapshots( string $id ): array
Lista metadatele instantaneelor, începând cu cele mai noi. Consultați Instantanee.
Șabloane
Rudel::save_template( string $id, string $name, string $description = '' ): arrayRudel::templates(): arrayRudel::delete_template( string $name ): bool
Șabloanele salvate sunt doar copii ale fișierelor. Niciun API sau nicio comandă nu creează un mediu izolat dintr-un șablon. Consultați Șabloane.
Git
Rudel::push( string $id, string $remote_url = '', string $message = 'Update from Rudel', string $subdir = '' ): ?string
Confirmă și trimite o copie de lucru din directorul mediului izolat în ramura rudel/{id}. $remote_url și $subdir folosesc implicit valorile stocate în mediul izolat. Returnează SHA-ul confirmării sau null dacă nu s-a schimbat nimic.
Automatizare
Rudel::run_automation(): arrayrulează acum sarcinile de automatizare programate.Rudel::run_scheduled_cleanup(): arrayface același lucru.
Consultați Automatizare.
Catalogul hook-urilor și comenzilor
Rudel::hooks(): arrayreturnează catalogul documentat al hook-urilor, indexat după numele hook-ului. Consultați Hook-uri.Rudel::cli_command_map(): arrayreturnează o descriere serializabilă a fiecărei comenziwp rudelși a metodei PHP aferente.Rudel::resolve_cli_command( $path, array $args = [], array $assoc_args = [] ): arraytransformă o comandă analizată într-un plan de execuție, fără să o ruleze.
$plan = Rudel::resolve_cli_command( 'wp rudel destroy', [ 'alpha-3be7' ] );
// $plan['callable'] => 'Rudel\Rudel::destroy'
// $plan['arguments'] => [ 'alpha-3be7' ]
// $plan['needs_confirmation'] => true
Majoritatea planurilor folosesc transportul php. logs --follow se rezolvă într-un plan shell care rulează tail -f.
Inițializare autonomă
Rudel::init( Connection $connection, array $context = [] ): void
Direcționează fațada către o conexiune directă MySQL pentru utilizare în afara WordPress. $context acceptă 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(): voidcreează tabelele Rudel pentru conexiunea activă.Rudel::reset(): voidșterge conexiunea autonomă și starea din cache.