API
Rudel\Rudel je statická fasáda. Každá metoda na této stránce je veřejnou statickou metodou této třídy.
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:
[
'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.
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.
$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ů.
$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.
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 = '' ): arrayRudel::templates(): arrayRudel::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(): arraynyní spustí naplánované automatizační úlohy.- Totéž provede
Rudel::run_scheduled_cleanup(): array.
Viz Automatizace.
Hooky a katalog příkazů
Rudel::hooks(): arrayvrátí dokumentovaný katalog hooků uspořádaný podle názvu hooku. Viz Hooky.Rudel::cli_command_map(): arrayvrátí serializovatelný popis každého příkazuwp rudela metody PHP, která za ním stojí.Rudel::resolve_cli_command( $path, array $args = [], array $assoc_args = [] ): arraypřevede jeden parsovaný příkaz na plán provedení, aniž by jej spustil.
$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.
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(): voidvytvoří tabulky Rudel pro aktivní připojení.Rudel::reset(): voidvymaže samostatné připojení a stav uložený v mezipaměti.