Vai al contenuto

API

Rudel\Rudel è una facciata statica. Ogni metodo descritto in questa pagina è un metodo statico pubblico di quella classe.

PHP
use Rudel\Rudel;

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

I metodi del ciclo di vita che clonano o eliminano tabelle (create(), create_from_git(), destroy(), cleanup(), cleanup_merged()) richiedono una richiesta WordPress attiva con $wpdb. Se chiamati dopo Rudel::init() al di fuori di WordPress, generano un'eccezione RuntimeException. Consultate Uso autonomo.

Contesto di esecuzione

Questi metodi descrivono la richiesta corrente. Al di fuori di una sandbox restituiscono false o null.

Metodo Restituisce
is_sandbox(): bool true quando la richiesta corrente viene eseguita all'interno di una sandbox
id(): ?string l'ID della sandbox corrente
path(): ?string la directory della sandbox corrente
engine(): ?string overlay all'interno di una sandbox
table_prefix(): ?string il prefisso delle tabelle della sandbox, ad esempio wp_b65338d_
url(): ?string la sandbox URL; le sandbox overlay condividono URL dell'host
exit_url(): string URL dell'host
is_email_disabled(): bool true quando la posta in uscita è bloccata per la richiesta
log_path(): ?string {sandbox directory}/debug.log
version(): ?string la versione di Rudel installata
cli_command(): string il comando radice WP-CLI, rudel a meno che non sia impostato RUDEL_CLI_COMMAND

Rudel::context(): array

Restituisce tutti i dati precedenti in un unico 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

Restituisce lo stesso riepilogo del runtime di wp rudel status come array: stato di bootstrap, sandbox corrente, directory e numero delle sandbox, i valori di rudel_config e l'indicazione se l'automazione è pianificata.

Record delle sandbox

Le sandbox vengono restituite come oggetti Rudel\Environment. Tra le proprietà utili di sola lettura figurano id, name, path, created_at, status, template, owner, labels, purpose, expires_at, last_used_at, theme_slug, table_prefix e clone_source. I metodi includono is_protected(), get_url(), get_table_prefix(), get_size() e to_array().

Rudel::all(): array

Restituisce ogni sandbox come array di oggetti Environment. Non accetta filtri.

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

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

Carica una sandbox in base all'ID oppure restituisce null.

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

Rudel::environments_dir(): string

Restituisce la directory che contiene le directory delle sandbox.

Ciclo di vita

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

Crea una sandbox e la restituisce. L'ID viene generato a partire dal nome seguito da quattro caratteri esadecimali.

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

Opzioni:

Chiave Significato
theme slug del tema da copiare nella sandbox; per impostazione predefinita, il tema attivo dell'host
clone_from ID di una sandbox esistente da clonare al posto dell'host
owner, purpose metadati in testo libero
labels array o stringa separata da virgole
protected true per escludere la sandbox dalla pulizia
ttl_days scadenza calcolata a partire dall'ora di creazione
expires_at data e ora di scadenza esplicite
template etichetta memorizzata nel record; non carica un modello salvato
site_options nomi delle opzioni e valori scalari scritti nella tabella delle opzioni della sandbox
skip_limits true per ignorare max_sandboxes e max_disk_mb

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

Crea una sandbox, quindi vi clona $remote_url. Accetta le opzioni di create(), oltre a name (per impostazione predefinita, il nome del repository) e type (theme oppure plugin). Restituisce [ 'environment' => Environment, 'git' => [...] ]. Se la clonazione non riesce, la sandbox non viene ripristinata; l'errore è restituito in git.error. Vedi ClonazioneGit.

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

Aggiorna i metadati del ciclo di vita e restituisce la sandbox aggiornata. Tra le chiavi accettate figurano owner, labels, purpose, protected, ttl_days (rispetto all'ora corrente), expires_at, clear_expiry, name e site_options.

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

Rudel::destroy( string $id ): bool

Elimina le tabelle della sandbox, rimuove la sua directory e i worktree collegati, quindi elimina il relativo record. Restituisce false se l'ID non esiste. Non verifica la protezione: elimina anche le sandbox protette.

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

Applica le regole di scadenza, anzianità e inattività. Opzioni: dry_run (bool), max_age_days e max_idle_days (sovrascrivono rudel_config se diversi da zero). Restituisce removed, skipped, errors e reasons (ID associato a expired, age, idle o protected). Vedi Pulizia.

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

Rimuove le sandbox i cui rami dei worktree Git collegati sono stati uniti al ramo predefinito del repository. Opzione: dry_run.

Rudel::touch_current_environment(): void

Registra l'attività (last_used_at) per la sandbox corrente. Rudel lo richiama a ogni richiesta relativa a una sandbox.

Log

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

Restituisce le ultime righe del file debug.log della sandbox come path, exists, empty, total_lines e lines.

Rudel::clear_log( string $id ): array

Svuota debug.log della sandbox e restituisce path, existed e cleared.

Snapshot

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

Crea uno snapshot e ne restituisce i metadati (name, created_at, sandbox_id).

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

Ripristina uno snapshot. Con l'impostazione predefinita auto_snapshot_before_restore, Rudel salva prima uno snapshot pre-restore-....

Rudel::snapshots( string $id ): array

Elenca i metadati degli snapshot, dal più recente. Vedi Snapshot.

Modelli

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

I modelli salvati sono solo copie di file. Nessun API o comando crea una sandbox a partire da un modello. Vedi Modelli.

Git

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

Esegue il commit e il push di un checkout all'interno della directory della sandbox sul ramo rudel/{id}. $remote_url e $subdir usano per impostazione predefinita i valori memorizzati nella sandbox. Restituisce lo SHA del commit oppure null se non è cambiato nulla.

Automazione

  • Rudel::run_automation(): array esegue subito le attività di automazione pianificate.
  • Rudel::run_scheduled_cleanup(): array fa lo stesso.

Vedi Automazione.

Hook e catalogo dei comandi

  • Rudel::hooks(): array restituisce il catalogo documentato degli hook, organizzato per nome. Vedi Hook.
  • Rudel::cli_command_map(): array restituisce una descrizione serializzabile di ogni comando wp rudel e del metodo PHP associato.
  • Rudel::resolve_cli_command( $path, array $args = [], array $assoc_args = [] ): array trasforma un comando analizzato in un piano di esecuzione senza eseguirlo.
PHP
$plan = Rudel::resolve_cli_command( 'wp rudel destroy', [ 'alpha-3be7' ] );
// $plan['callable']           => 'Rudel\Rudel::destroy'
// $plan['arguments']          => [ 'alpha-3be7' ]
// $plan['needs_confirmation'] => true

La maggior parte dei piani usa il trasporto php. logs --follow corrisponde a un piano shell in esecuzione tail -f.

Inizializzazione indipendente

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

Imposta la facciata affinché usi una connessione MySQL diretta, per l'utilizzo al di fuori di WordPress. $context accetta 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 crea le tabelle Rudel per la connessione attiva.
  • Rudel::reset(): void cancella la connessione indipendente e lo stato memorizzato nella cache.