Към съдържанието

API

Rudel\Rudel е статична фасада. Всеки метод на тази страница е публичен статичен метод на този клас.

PHP
use Rudel\Rudel;

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

Методите за жизнения цикъл, които клонират или изтриват таблици (create(), create_from_git(), destroy(), cleanup(), cleanup_merged()), изискват активна заявка към WordPress с $wpdb. При извикване след Rudel::init() извън WordPress те хвърлят RuntimeException. Вижте Самостоятелна употреба.

Контекст на изпълнение

Тези методи описват текущата заявка. Извън пясъчна среда връщат false или null.

Метод Връща
is_sandbox(): bool true, когато текущата заявка се изпълнява в пясъчна среда
id(): ?string ID на текущата пясъчна среда
path(): ?string директорията на текущата пясъчна среда
engine(): ?string overlay в пясъчна среда
table_prefix(): ?string префиксът на таблиците на пясъчната среда, например wp_b65338d_
url(): ?string URL на пясъчната среда; наслагваните пясъчни среди споделят URL на хоста
exit_url(): string URL на хоста
is_email_disabled(): bool true, когато изходящата поща е блокирана за заявката
log_path(): ?string {sandbox directory}/debug.log
version(): ?string инсталираната версия на Rudel
cli_command(): string кореновата команда на WP-CLI, rudel, освен ако не е зададено RUDEL_CLI_COMMAND

Rudel::context(): 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

Връща същата обобщена информация за средата на изпълнение като wp rudel status под формата на масив: състояние на началното зареждане, текуща пясъчна среда, директория и брой на пясъчните среди, стойностите на rudel_config и дали е планирана автоматизация.

Записи на пясъчните среди

Пясъчните среди се връщат като обекти Rudel\Environment. Полезните свойства само за четене включват id, name, path, created_at, status, template, owner, labels, purpose, expires_at, last_used_at, theme_slug, table_prefix и clone_source. Методите включват is_protected(), get_url(), get_table_prefix(), get_size() и to_array().

Rudel::all(): array

Връща всички пясъчни среди като масив от обекти Environment. Не приема филтри.

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

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

Зарежда пясъчна среда по ID или връща null.

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

Rudel::environments_dir(): string

Връща директорията, в която се съхраняват директориите на пясъчните среди.

Жизнен цикъл

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

Създава пясъчна среда и я връща. ID се генерира от името и четири шестнадесетични знака.

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

Опции:

Ключ Значение
theme кратко име на темата за копиране в пясъчната среда; по подразбиране е активната тема на хоста
clone_from ID на съществуваща пясъчна среда за клониране вместо тази на хоста
owner, purpose свободни текстови метаданни
labels масив или низ със стойности, разделени със запетаи
protected true за изключване на пясъчната среда от почистването
ttl_days срок на валидност, изчислен от момента на създаване
expires_at изричен времеви печат за изтичане
template етикет, записан в записа; не зарежда запазен шаблон
site_options имена на опции и скаларни стойности, записвани в таблицата с опции на пясъчната среда
skip_limits true за заобикаляне на max_sandboxes и max_disk_mb

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

Създава пясъчна среда и клонира $remote_url в нея. Приема опциите create(), както и name (по подразбиране името на хранилището) и type (theme или plugin). Връща [ 'environment' => Environment, 'git' => [...] ]. Неуспешното клониране не отменя създаването на пясъчната среда; грешката се връща в git.error. Вижте Git.

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

Актуализира метаданните за жизнения цикъл и връща обновената пясъчна среда. Приетите ключове включват owner, labels, purpose, protected, ttl_days (спрямо текущия момент), expires_at, clear_expiry, name и site_options.

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

Rudel::destroy( string $id ): bool

Изтрива таблиците на пясъчната среда, премахва директорията и свързаните работни дървета и изтрива записа. Връща false, ако ID не съществува. Не проверява защитата: изтриват се и защитените пясъчни среди.

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

Прилага правилата за изтичане, възраст и неактивност. Опции: dry_run (bool), max_age_days и max_idle_days (заместват rudel_config, когато стойността им е различна от нула). Връща removed, skipped, errors и reasons (ID към expired, age, idle или protected). Вижте Почистване.

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

Премахва пясъчните среди, чиито свързани клонове на работни дървета в Git са слети с клона по подразбиране на хранилището. Опция: dry_run.

Rudel::touch_current_environment(): void

Записва активност (last_used_at) за текущата пясъчна среда. Rudel го извиква при всяка заявка към пясъчна среда.

Регистрационни файлове

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

Връща последните редове от debug.log на пясъчната среда като path, exists, empty, total_lines и lines.

Rudel::clear_log( string $id ): array

Изпразва debug.log на пясъчната среда и връща path, existed и cleared.

Снимки на състоянието

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

Създава снимка на състоянието и връща метаданните ѝ (name, created_at, sandbox_id).

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

Възстановява снимка на състоянието. При настройката auto_snapshot_before_restore по подразбиране Rudel първо записва снимка на pre-restore-....

Rudel::snapshots( string $id ): array

Показва метаданните на снимките на състоянието, като най-новите са първи. Вижте Снимки на състоянието.

Шаблони

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

Запазените шаблони са само копия на файлове. Нито API, нито команда създава пясъчна среда от шаблон. Вижте Шаблони.

Git

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

Записва комит и го изпраща от работно копие в директорията на пясъчната среда към клона rudel/{id}. По подразбиране $remote_url и $subdir използват стойностите, записани в пясъчната среда. Връща SHA на комита или null, ако няма промени.

Автоматизация

  • Rudel::run_automation(): array стартира планираните задачи за автоматизация сега.
  • Rudel::run_scheduled_cleanup(): array прави същото.

Вижте Автоматизация.

Хукове и каталог на командите

  • Rudel::hooks(): array връща документирания каталог на хуковете, подреден по име на хук. Вижте Хукове.
  • Rudel::cli_command_map(): array връща сериализуемо описание на всяка команда wp rudel и метода PHP зад нея.
  • Rudel::resolve_cli_command( $path, array $args = [], array $assoc_args = [] ): array преобразува анализирана команда в план за изпълнение, без да я изпълнява.
PHP
$plan = Rudel::resolve_cli_command( 'wp rudel destroy', [ 'alpha-3be7' ] );
// $plan['callable']           => 'Rudel\Rudel::destroy'
// $plan['arguments']          => [ 'alpha-3be7' ]
// $plan['needs_confirmation'] => true

Повечето планове използват транспорта php. logs --follow се преобразува в план shell, който се изпълнява tail -f.

Самостоятелна инициализация

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

Насочва фасадата към директна връзка с MySQL за употреба извън WordPress. $context приема 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 създава таблиците Rudel за активната връзка.
  • Rudel::reset(): void изчиства самостоятелната връзка и кешираното състояние.