コンテンツへスキップ

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を出力します。

WP-CLIではRUDEL_ENVIRONMENTにそのIDを渡し、HTTPではX-Rudel-Environmentヘッダーまたはrudel_environmentCookieに指定します。PHPAPIは同じサンドボックスをライフサイクルメタデータ付きで作成します。

ターミナル
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_environment Cookie、または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を選ぶ理由

1つのインストールで複数のサンドボックス

Rudelは通常のWordPressインストール内で動作し、マルチサイトも2つ目のWordPressインストールも不要です。サンドボックスを指定しないすべてのリクエストには、ホストサイト自身のデータが引き続き提供されます。

テーブルと1つのテーマをコピー

サンドボックスには、ユーザーを含むホストテーブルのコピーが専用プレフィックスの下に作られ、有効なテーマのコピーも含まれます。子テーマの場合は親テーマもコピーされます。WordPressのコア、プラグインファイル、アップロードはホストに残ります。

期限付きサンドボックス

サンドボックスに所有者、ラベル、目的、日数単位のTTLを設定できます。1時間ごとのWP-Cronジョブが期限切れのサンドボックスを削除し、保護対象のものはスキップします。

安全にプレビュー

サンドボックス内のリクエストは外部メールをブロックし、ブロックした各メッセージを記録します。wp-config.phpで独自に設定しない限り、オブジェクトキャッシュキーのソルトはサンドボックスIDから生成されるため、永続キャッシュではホストとサンドボックスのキーが分離されます。

との比較

Rudelは既存のサイト内で動作します。以下のツールは関連するニーズに対応します。

他のツールとRudelの比較
WordPress Multisite 得意なこと1組のコアファイルで仮想サイトのネットワークを運用します。プラグインとテーマを共有し、サイトごとにデータベーステーブルとアップロードディレクトリを分けます。 Rudelとの違いRudelではマルチサイトは不要です。既存サイトのテーブルと有効なテーマをコピーし、ヘッダー、Cookie、またはWP-CLI環境変数でリクエストごとに選択します。
wp-env 得意なこと追加設定なしで、Dockerを使ってローカルのWordPressサイトをセットアップし、プラグインやテーマを開発・テストできます。 Rudelとの違いRudelでは2つ目のWordPressインストールは不要です。既存サイトのコンテンツからサンドボックスを作成し、テーブルはホストと同じMySQLデータベースに保存します。サンドボックス専用のPHPランタイムやデータベースサーバーは用意しません。
WordPress Playground 得意なことバックエンドなしでWebAssembly上のWordPressクライアントを実行します。ブラウザー内に隔離され、ブラウザー外に永続的な副作用はありません。 Rudelとの違いRudelは実サイトとそのMySQLデータベースの隣でサーバー上に動作します。サンドボックスはそのサイトの現在のコンテンツから作られ、WP-CLIと任意のHTTPクライアントからアクセスできます。

質問と回答

Rudelのドキュメントから、簡潔に回答します。

プラグインをインストールし、自分のサイトからサンドボックスを作成して、はじめにガイドに従って最初のリクエストを送信しましょう。