Přejít k obsahu

API

Rudel\Rudel je statická fasáda. Každá metoda na této stránce je veřejnou statickou metodou této třídy.

PHP
use Rudel\Rudel;

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

Metody životního cyklu, které klonují nebo odstraňují tabulky (create(), create_from_git(), destroy(), cleanup(), cleanup_merged()), vyžadují aktivní požadavek WordPress s $wpdb. Při volání po Rudel::init() mimo WordPress vyvolají RuntimeException. Viz Samostatné použití.

Kontext běhu

Tyto metody popisují aktuální požadavek. Mimo sandbox vracejí false nebo null.

Metoda Vrací
is_sandbox(): bool true, pokud aktuální požadavek běží v sandboxu
id(): ?string ID aktuálního sandboxu
path(): ?string aktuální adresář sandboxu
engine(): ?string overlay uvnitř sandboxu
table_prefix(): ?string prefix tabulek sandboxu, například wp_b65338d_
url(): ?string sandbox URL; překryvné sandboxy sdílejí hostitelský URL
exit_url(): string hostitelský URL
is_email_disabled(): bool true, pokud je pro požadavek blokována odchozí pošta
log_path(): ?string {sandbox directory}/debug.log
version(): ?string nainstalovaná verze Rudel
cli_command(): string kořenový příkaz WP-CLI, rudel, pokud je nastaveno RUDEL_CLI_COMMAND

Rudel::context(): array

Vrátí vše výše uvedené v jednom poli:

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

Vrátí stejné shrnutí běhu jako wp rudel status, a to jako pole: stav bootstrapu, aktuální sandbox, adresář a počet sandboxů, hodnoty rudel_config a informaci, zda je naplánována automatizace.

Záznamy sandboxů

Sandboxy se vracejí jako objekty Rudel\Environment. Mezi užitečné vlastnosti pouze pro čtení patří id, name, path, created_at, status, template, owner, labels, purpose, expires_at, last_used_at, theme_slug, table_prefix a clone_source. Mezi metody patří is_protected(), get_url(), get_table_prefix(), get_size() a to_array().

Rudel::all(): array

Vrátí každý sandbox jako objekt Environment v poli. Nepřijímá žádné filtry.

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

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

Načte sandbox podle ID, nebo vrátí null.

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

Rudel::environments_dir(): string

Vrátí adresář, ve kterém jsou uloženy adresáře sandboxů.

Životní cyklus

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

Vytvoří sandbox a vrátí jej. ID se generuje z názvu a čtyř hexadecimálních znaků.

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

Možnosti:

Klíč Význam
theme slug šablony, kterou zkopírovat do sandboxu; výchozí je aktivní šablona hostitele
clone_from ID existujícího sandboxu, který se má klonovat místo hostitele
owner, purpose metadata ve volném textu
labels pole nebo řetězec hodnot oddělených čárkami
protected true pro vyloučení sandboxu z čištění
ttl_days platnost počítaná od vytvoření
expires_at explicitní časové razítko vypršení platnosti
template štítek uložený v záznamu; nenačítá uloženou šablonu
site_options názvy voleb a skalární hodnoty zapsané do tabulky voleb sandboxu
skip_limits true pro obejití max_sandboxes a max_disk_mb

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

Vytvoří sandbox a poté do něj naklonuje $remote_url. Přijímá možnosti create() a navíc name (výchozí je název repozitáře) a type (theme nebo plugin). Vrací [ 'environment' => Environment, 'git' => [...] ]. Neúspěšné klonování sandbox nevrátí zpět; chyba se vrací v git.error. Viz Git.

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

Aktualizuje metadata životního cyklu a vrátí obnovený záznam sandboxu. Přijímané klíče zahrnují owner, labels, purpose, protected, ttl_days (relativně k aktuálnímu času), expires_at, clear_expiry, name a site_options.

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

Rudel::destroy( string $id ): bool

Odstraní tabulky sandboxu, jeho adresář a propojené pracovní stromy a smaže jeho záznam. Pokud ID neexistuje, vrátí false. Ochranu nekontroluje: smažou se i chráněné sandboxy.

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

Provede pravidla pro vypršení platnosti, stáří a nečinnost. Možnosti: dry_run (bool), max_age_days a max_idle_days (při nenulové hodnotě přepíšou rudel_config). Vrací removed, skipped, errors a reasons (ID k expired, age, idle nebo protected). Viz Čištění.

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

Odstraní sandboxy, jejichž propojené větve pracovních stromů Git byly sloučeny do výchozí větve repozitáře. Možnost: dry_run.

Rudel::touch_current_environment(): void

Zaznamená aktivitu (last_used_at) pro aktuální sandbox. Rudel tuto metodu volá při každém požadavku sandboxu.

Protokoly

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

Vrátí poslední řádky protokolu debug.log sandboxu jako path, exists, empty, total_lines a lines.

Rudel::clear_log( string $id ): array

Vyprázdní debug.log sandboxu a vrátí path, existed a cleared.

Snímky

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

Vytvoří snímek a vrátí jeho metadata (name, created_at, sandbox_id).

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

Obnoví snímek. Při výchozím nastavení auto_snapshot_before_restore nejprve Rudel uloží snímek pre-restore-....

Rudel::snapshots( string $id ): array

Vypíše metadata snímků, nejnovější jako první. Viz Snímky.

Šablony

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

Uložené šablony jsou pouze kopie souborů. Žádné API ani příkaz z nich nevytvoří sandbox. Viz Šablony.

Git

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

Potvrdí a odešle kopii pracovního stromu uvnitř adresáře sandboxu do větve rudel/{id}. $remote_url a $subdir mají ve výchozím nastavení hodnoty uložené v sandboxu. Vrátí SHA commitu, nebo null, pokud nedošlo k žádným změnám.

Automatizace

  • Rudel::run_automation(): array nyní spustí naplánované automatizační úlohy.
  • Totéž provede Rudel::run_scheduled_cleanup(): array.

Viz Automatizace.

Hooky a katalog příkazů

  • Rudel::hooks(): array vrátí dokumentovaný katalog hooků uspořádaný podle názvu hooku. Viz Hooky.
  • Rudel::cli_command_map(): array vrátí serializovatelný popis každého příkazu wp rudel a metody PHP, která za ním stojí.
  • Rudel::resolve_cli_command( $path, array $args = [], array $assoc_args = [] ): array převede jeden parsovaný příkaz na plán provedení, aniž by jej spustil.
PHP
$plan = Rudel::resolve_cli_command( 'wp rudel destroy', [ 'alpha-3be7' ] );
// $plan['callable']           => 'Rudel\Rudel::destroy'
// $plan['arguments']          => [ 'alpha-3be7' ]
// $plan['needs_confirmation'] => true

Většina plánů používá přenos php. logs --follow se přeloží na plán shell, který běží tail -f.

Samostatná inicializace

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

Nasmeruje fasádu na přímé připojení MySQL pro použití mimo WordPress. $context přijímá 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 vytvoří tabulky Rudel pro aktivní připojení.
  • Rudel::reset(): void vymaže samostatné připojení a stav uložený v mezipaměti.