API
Rudel\Rudel je statická fasáda. Každá metóda na tejto stránke je verejnou statickou metódou tejto triedy.
use Rudel\Rudel;
if ( Rudel::is_sandbox() ) {
error_log( 'Running in sandbox ' . Rudel::id() );
}
Metódy životného cyklu, ktoré klonujú alebo odstraňujú tabuľky (create(), create_from_git(), destroy(), cleanup(), cleanup_merged()), vyžadujú aktívnu požiadavku WordPress s $wpdb. Ak sa zavolajú po Rudel::init() mimo WordPress, vyhodia RuntimeException. Pozrite si Samostatné použitie.
Kontext behu
Tieto metódy opisujú aktuálnu požiadavku. Mimo sandboxu vracajú false alebo null.
| Metóda | Vráti |
|---|---|
is_sandbox(): bool |
true, ak aktuálna požiadavka beží v sandboxe |
id(): ?string |
ID aktuálneho sandboxu |
path(): ?string |
adresár aktuálneho sandboxu |
engine(): ?string |
overlay v sandboxe |
table_prefix(): ?string |
prefix tabuliek sandboxu, napríklad wp_b65338d_ |
url(): ?string |
URL sandboxu; prekrývajúce sandboxy zdieľajú hostiteľské URL |
exit_url(): string |
hostiteľské URL |
is_email_disabled(): bool |
true, ak je pre požiadavku blokovaná odchádzajúca pošta |
log_path(): ?string |
{sandbox directory}/debug.log |
version(): ?string |
nainštalovaná verzia Rudel |
cli_command(): string |
koreňový príkaz WP-CLI, rudel, pokiaľ nie je nastavené RUDEL_CLI_COMMAND |
Rudel::context(): array
Vráti všetky vyššie uvedené údaje 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áti rovnaký súhrn prostredia behu ako wp rudel status vo forme poľa: stav inicializácie, aktuálny sandbox, adresár a počet sandboxov, hodnoty rudel_config a informáciu, či je automatizácia naplánovaná.
Záznamy sandboxov
Sandboxy sa vracajú ako objekty Rudel\Environment. Medzi užitočné vlastnosti iba na čítanie patria id, name, path, created_at, status, template, owner, labels, purpose, expires_at, last_used_at, theme_slug, table_prefix a clone_source. Medzi metódy patria is_protected(), get_url(), get_table_prefix(), get_size() a to_array().
Rudel::all(): array
Vráti každý sandbox ako objekt Environment v poli. Neprijíma žiadne filtre.
foreach ( Rudel::all() as $sandbox ) {
echo $sandbox->id . ' ' . $sandbox->status . "\n";
}
Rudel::get( string $id ): ?Environment
Načíta sandbox podľa ID alebo vráti null.
$sandbox = Rudel::get( 'alpha-3be7' );
Rudel::environments_dir(): string
Vráti adresár, v ktorom sa nachádzajú adresáre sandboxov.
Životný cyklus
Rudel::create( string $name, array $options = [] ): Environment
Vytvorí sandbox a vráti ho. ID sa vytvorí z názvu a štyroch hexadecimálnych znakov.
$sandbox = Rudel::create( 'alpha', [
'theme' => 'twentytwentyfour',
'owner' => 'dennis',
'labels' => [ 'qa', 'agent' ],
'ttl_days' => 7,
] );
Možnosti:
| Kľúč | Význam |
|---|---|
theme |
slug témy, ktorá sa skopíruje do sandboxu; predvolene sa použije aktívna téma hostiteľa |
clone_from |
ID existujúceho sandboxu, ktorý sa naklonuje namiesto hostiteľa |
owner, purpose |
metadáta vo voľnom texte |
labels |
pole alebo reťazec hodnôt oddelených čiarkami |
protected |
true na vylúčenie sandboxu z čistenia |
ttl_days |
platnosť od času vytvorenia |
expires_at |
explicitná časová značka vypršania platnosti |
template |
označenie uložené v zázname; nenačíta uloženú šablónu |
site_options |
názvy možností a skalárne hodnoty zapísané do tabuľky možností sandboxu |
skip_limits |
true na obídenie max_sandboxes a max_disk_mb |
Rudel::create_from_git( string $remote_url, array $options = [] ): array
Vytvorí sandbox a potom doň naklonuje $remote_url. Prijíma možnosti create() a navyše name (predvolene názov úložiska) a type (theme alebo plugin). Vráti [ 'environment' => Environment, 'git' => [...] ]. Neúspešné klonovanie nezruší vytvorenie sandboxu; chyba sa vráti v git.error. Pozrite si Git.
Rudel::update( string $id, array $changes ): Environment
Aktualizuje metadáta životného cyklu a vráti obnovený sandbox. Medzi prijímané kľúče patria owner, labels, purpose, protected, ttl_days (relatívne k aktuálnemu času), expires_at, clear_expiry, name a site_options.
Rudel::update( 'alpha-3be7', [ 'protected' => true, 'ttl_days' => 3 ] );
Rudel::destroy( string $id ): bool
Odstráni tabuľky sandboxu, jeho adresár a prepojené pracovné stromy a vymaže jeho záznam. Ak ID neexistuje, vráti false. Kontrola ochrany sa nevykonáva: odstránia sa aj chránené sandboxy.
Rudel::cleanup( array $options = [] ): array
Uplatní pravidlá vypršania platnosti, veku a nečinnosti. Možnosti: dry_run (bool), max_age_days a max_idle_days (prepíšu rudel_config, ak sú nenulové). Vráti removed, skipped, errors a reasons (ID na expired, age, idle alebo protected). Pozrite si Čistenie.
Rudel::cleanup_merged( array $options = [] ): array
Odstráni sandboxy, ktorých prepojené vetvy pracovných stromov Git boli zlúčené do predvolenej vetvy úložiska. Možnosť: dry_run.
Rudel::touch_current_environment(): void
Zaznamená aktivitu (last_used_at) aktuálneho sandboxu. Rudel sa volá pri každej požiadavke sandboxu.
Denníky
Rudel::read_log( string $id, int $lines = 50 ): array
Vráti posledné riadky denníka sandboxu debug.log ako path, exists, empty, total_lines a lines.
Rudel::clear_log( string $id ): array
Vyprázdni denník sandboxu debug.log a vráti path, existed a cleared.
Snímky stavu
Rudel::snapshot( string $id, string $name ): array
Vytvorí snímku stavu a vráti jej metadáta (name, created_at, sandbox_id).
Rudel::restore( string $id, string $name ): void
Obnoví snímku stavu. Pri predvolenom nastavení auto_snapshot_before_restore najprv Rudel uloží snímku stavu pre-restore-....
Rudel::snapshots( string $id ): array
Zobrazí metadáta snímok stavu, od najnovšej. Pozrite si Snímky stavu.
Šablóny
Rudel::save_template( string $id, string $name, string $description = '' ): arrayRudel::templates(): arrayRudel::delete_template( string $name ): bool
Uložené šablóny sú iba kópie súborov. Žiadne API ani príkaz z nich nevytvára sandbox. Pozrite si Šablóny.
Git
Rudel::push( string $id, string $remote_url = '', string $message = 'Update from Rudel', string $subdir = '' ): ?string
Potvrdí zmeny a odošle checkout v adresári sandboxu do vetvy rudel/{id}. $remote_url a $subdir štandardne preberajú hodnoty uložené v sandboxe. Vráti SHA commitu alebo null, ak sa nič nezmenilo.
Automatizácia
Rudel::run_automation(): arrayteraz spustí naplánované automatizačné úlohy.Rudel::run_scheduled_cleanup(): arrayvykoná to isté.
Pozrite si časť Automatizácia.
Hooky a katalóg príkazov
Rudel::hooks(): arrayvráti zdokumentovaný katalóg hookov usporiadaný podľa názvu hooku. Pozrite si časť Hooky.Rudel::cli_command_map(): arrayvráti serializovateľný opis každého príkazuwp rudela metódy PHP, ktorá je za ním.Rudel::resolve_cli_command( $path, array $args = [], array $assoc_args = [] ): arrayzmení jeden parsovaný príkaz na plán vykonania bez toho, aby ho 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äčšina plánov používa transport php. logs --follow sa vyhodnotí ako plán shell spustený cez tail -f.
Samostatná inicializácia
Rudel::init( Connection $connection, array $context = [] ): void
Nasmeruje fasádu na priame pripojenie MySQL na použitie mimo WordPress. $context prijíma 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(): voidvytvorí tabuľky Rudel pre aktívne pripojenie.Rudel::reset(): voidvymaže samostatné pripojenie a údaje vo vyrovnávacej pamäti.