Pular para o conteúdo

API

Rudel\Rudel é uma fachada estática. Todos os métodos desta página são métodos estáticos públicos dessa classe.

PHP
use Rudel\Rudel;

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

Os métodos do ciclo de vida que clonam ou removem tabelas (create(), create_from_git(), destroy(), cleanup(), cleanup_merged()) precisam de uma requisição WordPress ativa com $wpdb. Eles lançam um RuntimeException quando chamados após Rudel::init() fora de WordPress. Consulte Uso independente.

Contexto de execução

Esses métodos descrevem a requisição atual. Fora de um sandbox, retornam false ou null.

Método Retorno
is_sandbox(): bool true quando a solicitação atual é executada em uma sandbox
id(): ?string o ID da sandbox atual
path(): ?string o diretório da sandbox atual
engine(): ?string overlay dentro de uma sandbox
table_prefix(): ?string o prefixo das tabelas da sandbox, por exemplo wp_b65338d_
url(): ?string o URL da sandbox; sandboxes overlay compartilham o URL do host
exit_url(): string o URL do host
is_email_disabled(): bool true quando o envio de e-mails está bloqueado para a solicitação
log_path(): ?string {sandbox directory}/debug.log
version(): ?string a versão instalada de Rudel
cli_command(): string o comando raiz WP-CLI, rudel a menos que RUDEL_CLI_COMMAND esteja definido

Rudel::context(): array

Retorna tudo o que foi listado acima em um único 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

Retorna o mesmo resumo de execução que wp rudel status em um array: estado de inicialização, sandbox atual, diretório e quantidade de sandboxes, os valores de rudel_config e se a automação está agendada.

Registros de sandbox

As sandboxes são retornadas como objetos Rudel\Environment. Entre as propriedades somente de leitura mais úteis estão id, name, path, created_at, status, template, owner, labels, purpose, expires_at, last_used_at, theme_slug, table_prefix e clone_source. Os métodos incluem is_protected(), get_url(), get_table_prefix(), get_size() e to_array().

Rudel::all(): array

Retorna todas as sandboxes como um array de objetos Environment. Não aceita filtros.

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

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

Carrega uma sandbox pelo ID ou retorna null.

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

Rudel::environments_dir(): string

Retorna o diretório que contém os diretórios das sandboxes.

Ciclo de vida

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

Cria uma sandbox e a retorna. O ID é gerado a partir do nome mais quatro caracteres hexadecimais.

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

Opções:

Chave Significado
theme slug do tema a ser copiado para a sandbox; por padrão, usa o tema ativo do host
clone_from ID de uma sandbox existente a ser clonada em vez do host
owner, purpose metadados em texto livre
labels array ou string separada por vírgulas
protected true para excluir a sandbox da limpeza
ttl_days validade relativa ao momento da criação
expires_at data e hora explícitas de expiração
template rótulo armazenado no registro; não carrega um modelo salvo
site_options nomes de opções e valores escalares gravados na tabela de opções da sandbox
skip_limits true para ignorar max_sandboxes e max_disk_mb

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

Cria uma sandbox e, em seguida, clona $remote_url nela. Aceita as opções de create(), além de name (por padrão, o nome do repositório) e type (theme ou plugin). Retorna [ 'environment' => Environment, 'git' => [...] ]. Uma falha na clonagem não reverte a criação da sandbox; o erro é retornado em git.error. Consulte Git.

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

Atualiza os metadados do ciclo de vida e retorna a sandbox atualizada. Entre as chaves aceitas estão owner, labels, purpose, protected, ttl_days (relativo ao momento atual), expires_at, clear_expiry, name e site_options.

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

Rudel::destroy( string $id ): bool

Remove as tabelas da sandbox, seu diretório e as árvores de trabalho vinculadas, e exclui seu registro. Retorna false quando o ID não existe. Não verifica a proteção: sandboxes protegidas também são destruídas.

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

Executa a política de expiração, idade e inatividade. Opções: dry_run (bool), max_age_days e max_idle_days (substituem rudel_config quando diferentes de zero). Retorna removed, skipped, errors e reasons (ID para expired, age, idle ou protected). Consulte Limpeza.

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

Remove sandboxes cujas ramificações de árvore de trabalho vinculadas do Git foram incorporadas à ramificação padrão do repositório. Opção: dry_run.

Rudel::touch_current_environment(): void

Registra a atividade (last_used_at) da sandbox atual. Rudel chama esse método em cada solicitação da sandbox.

Registros

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

Retorna as últimas linhas do debug.log da sandbox como path, exists, empty, total_lines e lines.

Rudel::clear_log( string $id ): array

Esvazia o debug.log da sandbox e retorna path, existed e cleared.

Instantâneos

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

Cria um instantâneo e retorna seus metadados (name, created_at, sandbox_id).

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

Restaura um instantâneo. Com a configuração padrão auto_snapshot_before_restore, Rudel salva primeiro um instantâneo pre-restore-....

Rudel::snapshots( string $id ): array

Lista os metadados dos instantâneos, dos mais recentes aos mais antigos. Consulte Instantâneos.

Modelos

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

Os modelos salvos são apenas cópias de arquivos. Nenhum API ou comando cria uma sandbox a partir de um deles. Consulte Modelos.

Git

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

Confirma e envia um checkout dentro do diretório da sandbox para a ramificação rudel/{id}. $remote_url e $subdir usam por padrão os valores armazenados na sandbox. Retorna o SHA do commit ou null quando não houve alterações.

Automação

  • Rudel::run_automation(): array executa agora as tarefas de automação agendadas.
  • Rudel::run_scheduled_cleanup(): array faz o mesmo.

Consulte Automação.

Ganchos e catálogo de comandos

  • Rudel::hooks(): array retorna o catálogo documentado de ganchos, organizado por nome de gancho. Consulte Ganchos.
  • Rudel::cli_command_map(): array retorna uma descrição serializável de cada comando wp rudel e do método PHP correspondente.
  • Rudel::resolve_cli_command( $path, array $args = [], array $assoc_args = [] ): array transforma um comando analisado em um plano de execução sem executá-lo.
PHP
$plan = Rudel::resolve_cli_command( 'wp rudel destroy', [ 'alpha-3be7' ] );
// $plan['callable']           => 'Rudel\Rudel::destroy'
// $plan['arguments']          => [ 'alpha-3be7' ]
// $plan['needs_confirmation'] => true

A maioria dos planos usa o transporte php. logs --follow é resolvido em um plano shell executado em tail -f.

Inicialização autônoma

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

Direciona a fachada para uma conexão direta MySQL, para uso fora de WordPress. $context aceita 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 cria as tabelas Rudel para a conexão ativa.
  • Rudel::reset(): void limpa a conexão autônoma e o estado em cache.