API
Το Rudel\Rudel είναι στατικό facade. Κάθε μέθοδος σε αυτή τη σελίδα είναι δημόσια στατική μέθοδος αυτής της κλάσης.
use Rudel\Rudel;
if ( Rudel::is_sandbox() ) {
error_log( 'Running in sandbox ' . Rudel::id() );
}
Οι μέθοδοι κύκλου ζωής που κλωνοποιούν ή διαγράφουν πίνακες (create(), create_from_git(), destroy(), cleanup(), cleanup_merged()) χρειάζονται ενεργό αίτημα WordPress με $wpdb. Προκαλούν ένα RuntimeException όταν καλούνται αφού το Rudel::init() βρίσκεται εκτός του WordPress. Δείτε την ενότητα Αυτόνομη χρήση.
Περιβάλλον εκτέλεσης
Αυτές οι μέθοδοι περιγράφουν το τρέχον αίτημα. Εκτός sandbox επιστρέφουν false ή null.
| Μέθοδος | Επιστρέφει |
|---|---|
is_sandbox(): bool |
true όταν το τρέχον αίτημα εκτελείται μέσα σε sandbox |
id(): ?string |
το ID του τρέχοντος sandbox |
path(): ?string |
τον τρέχοντα κατάλογο sandbox |
engine(): ?string |
overlay μέσα σε sandbox |
table_prefix(): ?string |
το πρόθεμα πινάκων του sandbox, για παράδειγμα wp_b65338d_ |
url(): ?string |
το URL του sandbox· τα overlay sandbox μοιράζονται το URL του host |
exit_url(): string |
το URL του host |
is_email_disabled(): bool |
true όταν η εξερχόμενη αλληλογραφία είναι αποκλεισμένη για το αίτημα |
log_path(): ?string |
{sandbox directory}/debug.log |
version(): ?string |
την εγκατεστημένη έκδοση Rudel |
cli_command(): string |
τη βασική εντολή WP-CLI, rudel εκτός αν έχει οριστεί το RUDEL_CLI_COMMAND |
Rudel::context(): array
Επιστρέφει όλα τα παραπάνω σε έναν πίνακα:
[
'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
Επιστρέφει την ίδια σύνοψη περιβάλλοντος εκτέλεσης με το wp rudel status ως πίνακα: κατάσταση αρχικοποίησης, τρέχον sandbox, κατάλογος και πλήθος sandbox, οι τιμές rudel_config και αν έχει προγραμματιστεί αυτοματοποίηση.
Εγγραφές sandbox
Τα sandbox επιστρέφονται ως αντικείμενα Rudel\Environment. Στις χρήσιμες ιδιότητες μόνο για ανάγνωση περιλαμβάνονται οι id, name, path, created_at, status, template, owner, labels, purpose, expires_at, last_used_at, theme_slug, table_prefix και clone_source. Στις μεθόδους περιλαμβάνονται οι is_protected(), get_url(), get_table_prefix(), get_size() και to_array().
Rudel::all(): array
Επιστρέφει κάθε sandbox ως πίνακα αντικειμένων Environment. Δεν δέχεται φίλτρα.
foreach ( Rudel::all() as $sandbox ) {
echo $sandbox->id . ' ' . $sandbox->status . "\n";
}
Rudel::get( string $id ): ?Environment
Φορτώνει ένα sandbox βάσει ID ή επιστρέφει null.
$sandbox = Rudel::get( 'alpha-3be7' );
Rudel::environments_dir(): string
Επιστρέφει τον κατάλογο που περιέχει τους καταλόγους sandbox.
Κύκλος ζωής
Rudel::create( string $name, array $options = [] ): Environment
Δημιουργεί ένα sandbox και το επιστρέφει. Το ID δημιουργείται από το όνομα και τέσσερις δεκαεξαδικούς χαρακτήρες.
$sandbox = Rudel::create( 'alpha', [
'theme' => 'twentytwentyfour',
'owner' => 'dennis',
'labels' => [ 'qa', 'agent' ],
'ttl_days' => 7,
] );
Επιλογές:
| Κλειδί | Σημασία |
|---|---|
theme |
αναγνωριστικό θέματος προς αντιγραφή στο sandbox· από προεπιλογή, το ενεργό θέμα του host |
clone_from |
ID υπάρχοντος sandbox προς κλωνοποίηση αντί του host |
owner, purpose |
μεταδεδομένα ελεύθερου κειμένου |
labels |
πίνακας ή συμβολοσειρά τιμών χωρισμένων με κόμμα |
protected |
true για εξαίρεση του sandbox από την εκκαθάριση |
ttl_days |
λήξη με βάση τον χρόνο δημιουργίας |
expires_at |
ρητή χρονική σήμανση λήξης |
template |
ετικέτα που αποθηκεύεται στην εγγραφή· δεν φορτώνει αποθηκευμένο πρότυπο |
site_options |
ονόματα επιλογών και βαθμωτές τιμές που εγγράφονται στον πίνακα επιλογών του sandbox |
skip_limits |
true για παράκαμψη των max_sandboxes και max_disk_mb |
Rudel::create_from_git( string $remote_url, array $options = [] ): array
Δημιουργεί ένα sandbox και, στη συνέχεια, κλωνοποιεί μέσα του το $remote_url. Δέχεται τις επιλογές create(), καθώς και το name (από προεπιλογή το όνομα του αποθετηρίου) και το type (theme ή plugin). Επιστρέφει [ 'environment' => Environment, 'git' => [...] ]. Αν η κλωνοποίηση αποτύχει, το sandbox δεν επανέρχεται στην προηγούμενη κατάσταση· το σφάλμα επιστρέφεται στο git.error. Δείτε Git.
Rudel::update( string $id, array $changes ): Environment
Ενημερώνει τα μεταδεδομένα κύκλου ζωής και επιστρέφει το ανανεωμένο sandbox. Στα αποδεκτά κλειδιά περιλαμβάνονται τα owner, labels, purpose, protected, ttl_days (σε σχέση με τώρα), expires_at, clear_expiry, name και site_options.
Rudel::update( 'alpha-3be7', [ 'protected' => true, 'ttl_days' => 3 ] );
Rudel::destroy( string $id ): bool
Διαγράφει τους πίνακες του sandbox, αφαιρεί τον κατάλογό του και τα συνδεδεμένα worktree και διαγράφει την εγγραφή του. Επιστρέφει false αν το ID δεν υπάρχει. Δεν ελέγχει την προστασία: διαγράφονται και τα προστατευμένα sandbox.
Rudel::cleanup( array $options = [] ): array
Εφαρμόζει την πολιτική λήξης, ηλικίας και αδράνειας. Επιλογές: dry_run (bool), max_age_days και max_idle_days (παρακάμπτουν το rudel_config όταν δεν είναι μηδέν). Επιστρέφει τα removed, skipped, errors και reasons (ID προς expired, age, idle ή protected). Δείτε Εκκαθάριση.
Rudel::cleanup_merged( array $options = [] ): array
Αφαιρεί sandbox των οποίων οι κλάδοι worktree του συνδεδεμένου Git έχουν συγχωνευτεί στον προεπιλεγμένο κλάδο του αποθετηρίου. Επιλογή: dry_run.
Rudel::touch_current_environment(): void
Καταγράφει δραστηριότητα (last_used_at) για το τρέχον sandbox. Το Rudel την καλεί σε κάθε αίτημα sandbox.
Αρχεία καταγραφής
Rudel::read_log( string $id, int $lines = 50 ): array
Επιστρέφει τις τελευταίες γραμμές του debug.log του sandbox ως path, exists, empty, total_lines και lines.
Rudel::clear_log( string $id ): array
Αδειάζει το debug.log του sandbox και επιστρέφει τα path, existed και cleared.
Στιγμιότυπα
Rudel::snapshot( string $id, string $name ): array
Δημιουργεί ένα στιγμιότυπο και επιστρέφει τα μεταδεδομένα του (name, created_at, sandbox_id).
Rudel::restore( string $id, string $name ): void
Επαναφέρει ένα στιγμιότυπο. Με την προεπιλεγμένη ρύθμιση auto_snapshot_before_restore, το Rudel αποθηκεύει πρώτα ένα στιγμιότυπο pre-restore-....
Rudel::snapshots( string $id ): array
Παραθέτει τα μεταδεδομένα των στιγμιότυπων, με τα νεότερα πρώτα. Δείτε Στιγμιότυπα.
Πρότυπα
Rudel::save_template( string $id, string $name, string $description = '' ): arrayRudel::templates(): arrayRudel::delete_template( string $name ): bool
Τα αποθηκευμένα πρότυπα είναι μόνο αντίγραφα αρχείων. Κανένα API ή εντολή δεν δημιουργεί sandbox από πρότυπο. Δείτε Πρότυπα.
Git
Rudel::push( string $id, string $remote_url = '', string $message = 'Update from Rudel', string $subdir = '' ): ?string
Υποβάλλει τις αλλαγές και κάνει push ένα checkout μέσα στον κατάλογο sandbox στον κλάδο rudel/{id}. Τα $remote_url και $subdir χρησιμοποιούν από προεπιλογή τις τιμές που είναι αποθηκευμένες στο sandbox. Επιστρέφει το SHA του commit ή null αν δεν υπάρχουν αλλαγές.
Αυτοματοποίηση
- Το
Rudel::run_automation(): arrayεκτελεί τώρα τις προγραμματισμένες εργασίες αυτοματοποίησης. - Το
Rudel::run_scheduled_cleanup(): arrayκάνει το ίδιο.
Δείτε Αυτοματοποίηση.
Άγκιστρα και κατάλογος εντολών
- Το
Rudel::hooks(): arrayεπιστρέφει τον τεκμηριωμένο κατάλογο hook, οργανωμένο ανά όνομα hook. Δείτε Άγκιστρα. - Το
Rudel::cli_command_map(): arrayεπιστρέφει σειριοποιήσιμη περιγραφή κάθε εντολήςwp rudelκαι της μεθόδου PHP που βρίσκεται από πίσω. - Το
Rudel::resolve_cli_command( $path, array $args = [], array $assoc_args = [] ): arrayμετατρέπει μία αναλυμένη εντολή σε σχέδιο εκτέλεσης χωρίς να την εκτελέσει.
$plan = Rudel::resolve_cli_command( 'wp rudel destroy', [ 'alpha-3be7' ] );
// $plan['callable'] => 'Rudel\Rudel::destroy'
// $plan['arguments'] => [ 'alpha-3be7' ]
// $plan['needs_confirmation'] => true
Τα περισσότερα σχέδια χρησιμοποιούν τη μεταφορά php. Το logs --follow επιλύεται σε σχέδιο shell που εκτελείται tail -f.
Αυτόνομη αρχικοποίηση
Rudel::init( Connection $connection, array $context = [] ): void
Συνδέει το facade με απευθείας σύνδεση MySQL για χρήση εκτός του WordPress. Το $context δέχεται environments_dir.
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δημιουργεί τους πίνακες Rudel για την ενεργή σύνδεση. - Το
Rudel::reset(): voidεκκαθαρίζει την αυτόνομη σύνδεση και την αποθηκευμένη κατάσταση.