跳转到正文

Rudel

按请求选择的WordPress覆盖环境,用于创建沙盒。

终端
composer require rudel/rudel

最新版本 v0.10.0 GPL-2.0-or-later WordPress 6.4+, PHP 8.2+

实践应用

从主站点创建沙箱,然后将 WP-CLI 或 HTTP 请求指向该沙箱。

创建沙箱并将请求路由到其中

wp rudel create 会在新前缀下克隆主站点的数据表,将主题复制到沙箱目录,并输出沙箱 ID。

在 RUDEL_ENVIRONMENT 中传入该 ID 以用于 WP-CLI,或在 X-Rudel-Environment 请求头或 rudel_environment Cookie 中传入以用于 HTTP。PHP API 可通过生命周期元数据创建相同的沙箱。

终端
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/

沙盒

适用于开发、测试和 AI 智能体的可弃用覆盖环境。

请求选择

使用X-Rudel-Environment请求头、rudel_environmentCookie 或WP-CLI中的RUDEL_ENVIRONMENT将请求路由到沙盒。仅凭沙盒 ID 进行选择,无需身份验证。

覆盖层运行时

激活会在wp-config.php中添加一行引导代码。之后,每个沙盒都会使用自己的前缀获得克隆表和当前主题副本;WordPress核心文件、插件文件及上传内容仍保持共享。

Git工作树

内置 PHP 原生 Git 克隆、推送和工作树流程,无需宿主 git 二进制文件。

快照

为沙箱创建命名恢复点,复制其中的表和受管理的主题文件。可通过 WP-CLI 或 PHP 创建和恢复恢复点。

请求隔离

为每个请求设置独立的数据表前缀、主题根目录、临时目录、对象缓存键盐,并阻止发送电子邮件。

WP-CLI & PHP API

wp rudel 命令和 Rudel\Rudel 静态方法可创建、列出、更新、快照、恢复和销毁沙箱。

适配智能体

为编码智能体提供一次性 WordPress 副本,其中 WP-CLI 按 RUDEL_ENVIRONMENT 限定范围,并阻止发送外发邮件。

为什么选择 Rudel

一个安装,多个沙箱

Rudel 在普通的 WordPress 安装中运行,无需多站点,也无需第二个 WordPress 安装。未指定沙箱的请求仍由主站点提供其自身数据。

复制数据表和一个主题

沙箱会在自己的前缀下获得主站点数据表的副本(包括用户),以及活动主题的副本;如果是子主题,还会复制其父主题。WordPress 核心、插件文件和上传文件仍保留在主站点。

可设置过期时间的沙箱

为沙箱设置所有者、标签、用途和以天为单位的 TTL。每小时运行的 WP-Cron 任务会移除已过期的沙箱,并跳过标记为受保护的沙箱。

可安全预览

沙箱请求会阻止外发邮件,并记录每条被阻止的邮件。除非 wp-config.php 设置了自己的对象缓存键盐,否则该盐会根据沙箱 ID 生成,使持久化缓存中的主站点键和沙箱键彼此隔离。

对比

Rudel 可在你现有的网站中运行。这些工具可满足相关需求。

Rudel 与其他工具的对比
WordPress Multisite 擅长领域在一组核心文件上运行多个虚拟站点,共享插件和主题,同时为每个站点使用独立的数据库表和上传目录。 与 Rudel 的区别Rudel 无需多站点。沙箱是现有站点的数据表和活动主题的副本,可在每个请求中通过请求头、Cookie 或 WP-CLI 环境变量选择。
wp-env 擅长领域配置一个本地 WordPress 站点,并使用 Docker 构建和测试插件与主题,无需额外配置。 与 Rudel 的区别Rudel 无需第二个 WordPress 安装。它会根据你现有站点的内容创建沙箱,其数据表与主站点位于同一个 MySQL 数据库中。沙箱不会拥有独立的 PHP 运行时或数据库服务器。
WordPress Playground 擅长领域在浏览器端通过 WebAssembly 运行 WordPress,无需后端,隔离于浏览器中,且不会在浏览器之外造成持久性副作用。 与 Rudel 的区别Rudel 在服务器上与真实站点及其 MySQL 数据库一同运行。沙箱基于该站点的当前内容创建,可通过 WP-CLI 和任何 HTTP 客户端访问。

问答

来自 Rudel 文档的简明解答。

安装插件,从你自己的网站创建沙箱,并按照入门指南向其中发送第一个请求。