Aller au contenu

Hooks

Rudel déclenche les actions et filtres WordPress autour des événements du cycle de vie des sandboxes. Le catalogue ci-dessous correspond à ce que renvoie Rudel::hooks() : 28 actions et 5 filtres.

Exemple

PHP
add_action(
    'rudel_after_environment_create',
    function ( \Rudel\Environment $environment, array $context ): void {
        error_log( 'Created Rudel environment ' . $environment->id );
    },
    10,
    2
);

La plupart des actions before et failed reçoivent un tableau $context. Pour les hooks du cycle de vie d’une sandbox, il contient le environment (ou le name, le options et le environments_dir lors de la création) ; les actions failed reçoivent également l’Throwable interceptée sous la forme de $error.

Actions du cycle de vie des sandboxes

Action Arguments
rudel_before_environment_create $context
rudel_after_environment_create $environment, $context
rudel_environment_create_failed $context, $error
rudel_before_environment_update $context
rudel_after_environment_update $environment, $context
rudel_environment_update_failed $context, $error
rudel_before_environment_destroy $context
rudel_after_environment_destroy $context
rudel_environment_destroy_failed $context, $error
rudel_before_environment_replace_state $context
rudel_after_environment_replace_state $result, $context
rudel_environment_replace_state_failed $context, $error

Les trois actions replace_state appartiennent à EnvironmentManager::replace_environment_state(), qu’aucune commande Rudel n’appelle.

Actions de snapshot

Action Arguments
rudel_before_recovery_point_create $context
rudel_after_recovery_point_create $context, $meta
rudel_before_recovery_point_restore $context
rudel_after_recovery_point_restore $context
rudel_before_recovery_point_delete $context
rudel_after_recovery_point_delete $context

$context contient environment, kind (snapshot), name et path. Chacun déclenche également un alias snapshot, par exemple rudel_after_snapshot_create ; les échecs déclenchent rudel_failed_recovery_point_{create|restore|delete} et rudel_failed_snapshot_{create|restore|delete} avec $context et l’erreur. Ces alias ne figurent pas dans le catalogue.

Actions de nettoyage

Action Arguments
rudel_before_environment_cleanup $options
rudel_after_environment_cleanup $result, $options
rudel_before_environment_cleanup_merged $options
rudel_after_environment_cleanup_merged $result, $options

$result contient removed, skipped, errors et reasons.

Actions d’envoi Git

Action Arguments
rudel_before_environment_push $context
rudel_after_environment_push $sha, $context
rudel_environment_push_failed $context, $error

Ces actions se déclenchent pour Rudel::push(). $context contient environment, remote, message et subdir. La commande wp rudel push envoie directement les modifications et ne les déclenche pas.

Actions d’automatisation

Action Arguments
rudel_before_automation_cleanup $config
rudel_after_automation_cleanup $result, $config
rudel_after_automation_expiring_environments $result, $config

$config est le tableau rudel_config complet. Consultez Automatisation.

Filtres

Filtre Arguments
rudel_environment_create_options $options, $name, $manager
rudel_environment_clone_source $clone_source, $host_url, $db_cloned, $themes_cloned, $plugins_cloned, $uploads_cloned, $extra
rudel_environment_cleanup_options $options, $repository
rudel_environment_cleanup_merged_options $options, $repository
rudel_environment_db_dropin_contents $contents, $context

rudel_environment_create_options peut modifier les options de tout appel de création avant que Rudel ne les traite. rudel_environment_clone_source filtre les métadonnées de clonage enregistrées dans une sandbox créée à partir de l’hôte. rudel_environment_db_dropin_contents s’applique uniquement au drop-in db.php utilisé par les environnements multisite avec sous-sites ; les sandboxes en overlay, seul type créé par les versions actuelles, n’en génèrent jamais.

Les filtres servent à ajuster les règles, pas à remplacer le modèle de stockage de Rudel. L’identité d’exécution, les préfixes de tables et les métadonnées des worktrees restent des données Rudel stockées en base de données.