Saltar al contenido

API

Rudel\Rudel es una fachada estática. Todos los métodos de esta página son métodos estáticos públicos de esa clase.

PHP
use Rudel\Rudel;

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

Los métodos del ciclo de vida que clonan o eliminan tablas (create(), create_from_git(), destroy(), cleanup(), cleanup_merged()) necesitan una solicitud WordPress activa con $wpdb. Si se llaman después de Rudel::init() fuera de WordPress, lanzan un RuntimeException. Consulte Uso independiente.

Contexto de ejecución

Estos métodos describen la solicitud actual. Fuera de un entorno aislado, devuelven false o null.

Método Devuelve
is_sandbox(): bool true cuando la solicitud actual se ejecuta en un entorno aislado
id(): ?string el ID del entorno aislado actual
path(): ?string el directorio del entorno aislado actual
engine(): ?string overlay dentro de un entorno aislado
table_prefix(): ?string el prefijo de tabla del entorno aislado, por ejemplo wp_b65338d_
url(): ?string el URL del entorno aislado; los entornos aislados superpuestos comparten el URL del host
exit_url(): string el URL del host
is_email_disabled(): bool true cuando se bloquea el correo saliente para la solicitud
log_path(): ?string {sandbox directory}/debug.log
version(): ?string la versión instalada de Rudel
cli_command(): string el comando raíz de WP-CLI, rudel salvo que se establezca RUDEL_CLI_COMMAND

Rudel::context(): array

Devuelve todo lo anterior en una matriz:

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

Devuelve el mismo resumen de ejecución que wp rudel status como matriz: estado de inicio, entorno aislado actual, directorio y cantidad de entornos aislados, los valores de rudel_config y si hay automatización programada.

Registros de entornos aislados

Los entornos aislados se devuelven como objetos Rudel\Environment. Entre las propiedades útiles de solo lectura se incluyen id, name, path, created_at, status, template, owner, labels, purpose, expires_at, last_used_at, theme_slug, table_prefix y clone_source. Los métodos incluyen is_protected(), get_url(), get_table_prefix(), get_size() y to_array().

Rudel::all(): array

Devuelve todos los entornos aislados como una matriz de objetos Environment. No admite filtros.

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

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

Carga un entorno aislado por ID o devuelve null.

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

Rudel::environments_dir(): string

Devuelve el directorio que contiene los directorios de los entornos aislados.

Ciclo de vida

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

Crea un entorno aislado y lo devuelve. El ID se genera a partir del nombre y cuatro caracteres hexadecimales.

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

Opciones:

Clave Significado
theme slug del tema que se copiará al entorno aislado; de forma predeterminada, se usa el tema activo del host
clone_from ID de un entorno aislado existente que se clonará en lugar del host
owner, purpose metadatos de texto libre
labels matriz o cadena separada por comas
protected true para excluir el entorno aislado de la limpieza
ttl_days vencimiento relativo al momento de creación
expires_at marca de tiempo de vencimiento explícita
template etiqueta guardada en el registro; no carga una plantilla guardada
site_options nombres de opciones y valores escalares que se escriben en la tabla de opciones del entorno aislado
skip_limits true para omitir max_sandboxes y max_disk_mb

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

Crea un entorno aislado y luego clona $remote_url en él. Acepta las opciones create(), además de name (el nombre del repositorio de forma predeterminada) y type (theme o plugin). Devuelve [ 'environment' => Environment, 'git' => [...] ]. Si la clonación falla, el entorno aislado no se revierte; el error se devuelve en git.error. Consulte Git.

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

Actualiza los metadatos del ciclo de vida y devuelve el entorno aislado actualizado. Entre las claves aceptadas se incluyen owner, labels, purpose, protected, ttl_days (relativo al momento actual), expires_at, clear_expiry, name y site_options.

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

Rudel::destroy( string $id ): bool

Elimina las tablas del entorno aislado, borra su directorio y los árboles de trabajo vinculados, y elimina su registro. Devuelve false si el ID no existe. No comprueba si está protegido: también se destruyen los entornos aislados protegidos.

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

Aplica la política de vencimiento, antigüedad e inactividad. Opciones: dry_run (bool), max_age_days y max_idle_days (anulan rudel_config si no son cero). Devuelve removed, skipped, errors y reasons (ID a expired, age, idle o protected). Consulte Limpieza.

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

Elimina los entornos aislados cuyas ramas de árboles de trabajo de Git vinculados se hayan fusionado con la rama predeterminada del repositorio. Opción: dry_run.

Rudel::touch_current_environment(): void

Registra la actividad (last_used_at) del entorno aislado actual. Rudel lo llama en cada solicitud del entorno aislado.

Registros

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

Devuelve las últimas líneas del registro debug.log del entorno aislado como path, exists, empty, total_lines y lines.

Rudel::clear_log( string $id ): array

Vacía el registro debug.log del entorno aislado y devuelve path, existed y cleared.

Instantáneas

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

Crea una instantánea y devuelve sus metadatos (name, created_at, sandbox_id).

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

Restaura una instantánea. Con la opción predeterminada auto_snapshot_before_restore, Rudel guarda primero una instantánea pre-restore-....

Rudel::snapshots( string $id ): array

Enumera los metadatos de las instantáneas, empezando por la más reciente. Consulte Instantáneas.

Plantillas

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

Las plantillas guardadas son solo copias de archivos. Ningún API ni comando crea un entorno aislado a partir de ellas. Consulte Plantillas.

Git

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

Confirma y publica en la rama rudel/{id} una copia de trabajo dentro del directorio del entorno aislado. $remote_url y $subdir usan de forma predeterminada los valores guardados en el entorno aislado. Devuelve el SHA de la confirmación o null si no hubo cambios.

Automatización

  • Rudel::run_automation(): array ejecuta ahora las tareas de automatización programadas.
  • Rudel::run_scheduled_cleanup(): array hace lo mismo.

Consulte Automatización.

Ganchos y catálogo de comandos

  • Rudel::hooks(): array devuelve el catálogo documentado de ganchos, organizado por nombre de gancho. Consulte Ganchos.
  • Rudel::cli_command_map(): array devuelve una descripción serializable de cada comando wp rudel y del método PHP correspondiente.
  • Rudel::resolve_cli_command( $path, array $args = [], array $assoc_args = [] ): array convierte un comando analizado en un plan de ejecución sin ejecutarlo.
PHP
$plan = Rudel::resolve_cli_command( 'wp rudel destroy', [ 'alpha-3be7' ] );
// $plan['callable']           => 'Rudel\Rudel::destroy'
// $plan['arguments']          => [ 'alpha-3be7' ]
// $plan['needs_confirmation'] => true

La mayoría de los planes usan el transporte php. logs --follow se convierte en un plan shell que se ejecuta tail -f.

Inicialización independiente

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

Dirige la fachada a una conexión directa MySQL para usarla fuera de WordPress. $context acepta 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 crea las tablas Rudel para la conexión activa.
  • Rudel::reset(): void borra la conexión independiente y el estado en caché.