API
Rudel\Rudel — статический фасад. Каждый метод на этой странице — открытый статический метод этого класса.
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_CLI_COMMAND (по умолчанию rudel) |
Rudel::context(): array
Возвращает все перечисленное выше в виде одного массива:
[
'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, в виде массива: состояние bootstrap, текущая песочница, каталог песочниц и их количество, значения 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. Фильтры не принимает.
foreach ( Rudel::all() as $sandbox ) {
echo $sandbox->id . ' ' . $sandbox->status . "\n";
}
Rudel::get( string $id ): ?Environment
Загружает песочницу по ID или возвращает null.
$sandbox = Rudel::get( 'alpha-3be7' );
Rudel::environments_dir(): string
Возвращает каталог, в котором находятся каталоги песочниц.
Жизненный цикл
Rudel::create( string $name, array $options = [] ): Environment
Создает песочницу и возвращает ее. ID формируется из имени и четырех шестнадцатеричных символов.
$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.
Rudel::update( 'alpha-3be7', [ 'protected' => true, 'ttl_days' => 3 ] );
Rudel::destroy( string $id ): bool
Удаляет таблицы песочницы, ее каталог и связанные рабочие деревья, а также запись о ней. Возвращает false, если такого ID нет. Проверка защиты не выполняется: защищенные песочницы тоже удаляются.
Rudel::cleanup( array $options = [] ): array
Применяет правила истечения срока, возраста и периода бездействия. Параметры: dry_run (логическое значение), 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 = '' ): arrayRudel::templates(): arrayRudel::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преобразует разобранную команду в план выполнения, не запуская ее.
$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.
Инициализация вне WordPress
Rudel::init( Connection $connection, array $context = [] ): void
Направляет фасад к прямому подключению MySQL для использования вне WordPress. $context принимает 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(): voidсоздает таблицы Rudel для активного подключения.Rudel::reset(): voidсбрасывает автономное подключение и кешированное состояние.