Rudel
Ambientes de sobreposição WordPress selecionados por solicitação para sandboxes.
composer require rudel/rudelVersão mais recente v0.10.0 GPL-2.0-or-later WordPress 6.4+, PHP 8.2+
wp rudel create \
--name=feature-a \
--owner=dennis \
--labels=agent,qa \
--purpose="Test checkout changes" \
--ttl-days=7Na prática
Crie um sandbox a partir do site host e direcione WP-CLI ou uma solicitação HTTP para ele.
Crie um sandbox e direcione solicitações para ele
wp rudel create clona as tabelas do host sob um novo prefixo, copia o tema para o diretório do sandbox e exibe o ID do sandbox.
Passe esse ID em RUDEL_ENVIRONMENT para WP-CLI ou no cabeçalho X-Rudel-Environment ou cookie rudel_environment para HTTP. O PHP API cria o mesmo sandbox com metadados do ciclo de vida.
wp rudel create --name=alpha --theme=twentytwentyfour
RUDEL_ENVIRONMENT=alpha-1234 wp option get siteurl
curl -H 'X-Rudel-Environment: alpha-1234' http://localhost:8000/$sandbox = Rudel::create( 'alpha', [
'theme' => 'twentytwentyfour',
'owner' => 'dennis',
'labels' => [ 'qa', 'agent' ],
'ttl_days' => 7,
] );Ambientes isolados
Ambientes de sobreposição descartáveis para desenvolvimento, testes e agentes de IA.
Seleção por solicitação
Direcione uma solicitação para um sandbox com um cabeçalho X-Rudel-Environment, um cookie rudel_environment ou RUDEL_ENVIRONMENT em WP-CLI. A seleção usa apenas o ID do sandbox, sem autenticação.
Execução em sobreposição
A ativação adiciona uma linha de bootstrap a wp-config.php. Cada sandbox recebe então tabelas clonadas sob seu próprio prefixo e uma cópia do tema ativo; o núcleo, os arquivos de plugins e os uploads de WordPress permanecem compartilhados.
Worktrees de Git
Fluxos integrados de clone, push e worktree nativos de PHP Git, sem exigir o binário git do host.
Snapshots
Pontos de recuperação nomeados que copiam as tabelas e os arquivos de tema gerenciados de um sandbox. Crie e restaure-os com WP-CLI ou PHP.
Isolamento por solicitação
Prefixos de tabela, raízes de temas, diretório temporário, sal da chave do cache de objetos e bloqueio de e-mails, todos por solicitação.
WP-CLI & PHP API
Os comandos wp rudel e os métodos estáticos Rudel\Rudel criam, listam, atualizam, salvam snapshots, restauram e destroem sandboxes.
Pronto para agentes
Oferece aos agentes de programação uma cópia descartável de WordPress, com WP-CLI limitado por RUDEL_ENVIRONMENT e e-mails enviados bloqueados.
Por que Rudel
Uma instalação, muitos sandboxes
Rudel é executado em uma instalação normal de WordPress, sem multisite nem uma segunda instalação de WordPress. O site host continua servindo seus próprios dados a todas as solicitações que não indicam um sandbox.
Copia as tabelas e um tema
Um sandbox recebe uma cópia das tabelas do host, incluindo os usuários, com um prefixo próprio e uma cópia do tema ativo, além do tema pai, se for um tema filho. WordPress core, os arquivos de plugins e os uploads permanecem no host.
Sandboxes com prazo de validade
Defina um proprietário, rótulos, uma finalidade e um TTL em dias para o sandbox. Um trabalho WP-Cron por hora remove os sandboxes expirados e ignora aqueles marcados como protegidos.
Seguro para visualizar
As solicitações ao sandbox bloqueiam e-mails enviados e registram cada mensagem bloqueada. A menos que wp-config.php defina o seu próprio, o salt da chave do cache de objetos é derivado do ID do sandbox, mantendo separadas as chaves dos caches persistentes do host e do sandbox.
Comparação com
Rudel funciona dentro do site que você já administra. Estas ferramentas atendem a necessidades relacionadas.
| Ferramenta | Ideal para | Diferenças em relação a Rudel |
|---|---|---|
| WordPress Multisite | Ideal paraExecuta uma rede de sites virtuais com um único conjunto de arquivos core, plugins e temas compartilhados, e tabelas de banco de dados e diretórios de uploads separados para cada site. | Diferenças em relação a RudelRudel não precisa de multisite. Um sandbox é uma cópia das tabelas e do tema ativo do site existente, selecionada por solicitação por meio de um cabeçalho, um cookie ou uma variável de ambiente WP-CLI. |
| wp-env | Ideal paraConfigura um site local de WordPress com Docker para desenvolver e testar plugins e temas, sem configuração adicional. | Diferenças em relação a RudelRudel não precisa de uma segunda instalação de WordPress. Ele cria sandboxes a partir do conteúdo do site que você já administra, e as tabelas deles ficam no mesmo banco de dados MySQL que o host. O sandbox não recebe seu próprio runtime PHP nem servidor de banco de dados. |
| WordPress Playground | Ideal paraExecuta WordPress no lado do cliente em WebAssembly, sem backend, isolado no navegador e sem efeitos persistentes fora dele. | Diferenças em relação a RudelRudel é executado no servidor, junto de um site real e do banco de dados MySQL dele. Um sandbox começa com o conteúdo atual desse site e pode ser acessado por WP-CLI e por qualquer cliente HTTP. |
Perguntas e respostas
Respostas curtas da documentação do Rudel.
WordPress core, arquivos de plugins e mídia enviada. Cada sandbox recebe sua própria cópia das tabelas do banco de dados, incluindo os usuários, com um prefixo gerado, e sua própria cópia do tema ativo.
Envie o cabeçalho X-Rudel-Environment ou o cookie rudel_environment em uma solicitação HTTP, ou defina RUDEL_ENVIRONMENT para WP-CLI. Rudel aceita o ID de qualquer cliente, portanto, a seleção não é um controle de acesso.
Não. As solicitações dentro de um sandbox interrompem o envio de e-mails por meio do filtro pre_wp_mail e registram o destinatário e o assunto de cada mensagem bloqueada.
Em duas tabelas no banco de dados do host, wp_rudel_environments e wp_rudel_worktrees, com o prefixo padrão. Não há configuração de runtime JSON nem armazenamento SQLite.
A ativação cria as tabelas de runtime, adiciona uma linha de inicialização a wp-config.php e agenda o evento de limpeza, então WordPress precisa ter acesso de gravação a wp-config.php nesse momento. A desativação remove a linha.
Sim. wp rudel snapshot salva as tabelas do sandbox e os arquivos do tema com um nome, e wp rudel restore com --snapshot os restaura.
Instale o plugin, crie um sandbox a partir do seu próprio site e envie sua primeira solicitação para ele com o guia de introdução.