
# Izolācija

Rudel ir pieprasījumā atlasītu pārklājumu sistēma. Atlasīts pieprasījums izmanto smilškastes datubāzes tabulas un tēmas failus, vienlaikus darbojoties resursdatora WordPress instalācijā.

## Izolēts katrā smilškastē

### WordPress tabulas

Katrai smilškastei tiek ģenerēts tabulu prefikss: resursdatora prefikss un smilškastes ID pirmās septiņas heksadecimālās rakstzīmes MD5.

```text
wp_b65338d_options
wp_b65338d_posts
wp_b65338d_users
```

Rudel pārslēdz WordPress tabulu prefiksu, pirms WordPress pabeidz sāknēšanu, tāpēc katrs vaicājums smilškastes pieprasījumā lasa un raksta smilškastes kopijas.

### Lietotāji

`users` un `usermeta` tabulas tiek klonētas kopā ar pārējām. Izveides brīdī smilškastē ir resursdatora lietotāji un paroles; pēc tam smilškastē izveidotie, mainītie vai dzēstie lietotāji neietekmē resursdatoru, un resursdatora izmaiņas nesasniedz smilškasti.

### Aktīvās tēmas faili

Atlasītā tēma tiek kopēta smilškastes direktorijā:

```text
wp-content/rudel-environments/{environment_id}/themes/{theme_slug}
```

Ja tēma ir bērntēma, Rudel kopē arī vecāktēmu, lai veidņu saistība paliktu derīga. Smilškaste vienmēr nodrošina izveides brīdī reģistrēto tēmu; tēmas maiņa smilškastē neko nemaina.

## Koplietots ar resursdatoru

- WordPress kodols
- spraudņu faili
- augšupielādēti multivides faili

Resursdatorā instalēts vai atjaunināts spraudnis ir instalēts vai atjaunināts katrā smilškastē. Aktīvo spraudņu saraksts tiek glabāts opciju tabulā, tāpēc aktivizācijas stāvoklis katrā smilškastē ir atsevišķs. Smilškastē veiktās augšupielādes nonāk resursdatora augšupielāžu direktorijā. Tādējādi smilškastes izveide ir ātra un nav nepieciešams globāli aizstāt `WP_CONTENT_DIR`.

Saglabājiet Rudel aktīvu katrā smilškastē. Tā pasta bloķēšana un tēmas pārklājums darbojas no spraudņa, un, ja tas tiek deaktivizēts, kamēr atlasīta smilškaste, no koplietotā `wp-config.php` tiek noņemta arī sāknēšanas rinda, kas izslēdz smilškastu atlasi visai instalācijai ([13. problēma](https://github.com/inline0/rudel/issues/13)).

## Smilškastes atlase

HTTP pieprasījumi atlasa smilškasti, izmantojot:

- galveni `X-Rudel-Environment` (mantotais aizstājvārds `X-Rudel-Sandbox`)
- sīkdatni `rudel_environment` (mantotais aizstājvārds `rudel_sandbox`)

Rudel nekad neiestata un neizdzēš sīkdatni. Lai atgrieztos pie resursdatora, izdzēsiet to; administrēšanas joslas vienums Sandbox norāda uz resursdatora URL, bet sīkdatne paliek ([10. problēma](https://github.com/inline0/rudel/issues/10)).

WP-CLI komandas atlasa smilškasti, izmantojot:

- vides mainīgo `RUDEL_ENVIRONMENT`
- `--url`, kura resursdatora nosaukums sākas ar smilškastes ID, piemēram, `--url=http://alpha-3be7.example.test`

Atlase nav autentificēta. Jebkurš klients, kas var piekļūt vietnei un nosūta derīgu smilškastes ID, tiek novirzīts uz šo smilškasti, un smilškastu ID (nosaukums un četras heksadecimālās rakstzīmes) ir viegli uzminami. Neuzskatiet smilškastes atlasi par piekļuves kontroles robežu; aizsargājiet publisku resursdatoru tīmekļa servera vai tīkla līmenī.

## Pieprasījumu noklusējumi

Atlasītam pieprasījumam Rudel:

- bloķē izejošo e-pastu, izmantojot `pre_wp_mail` filtru
- iestata `WP_TEMP_DIR` uz smilškastes direktorijas `tmp`
- iestata `WP_CACHE_KEY_SALT` uz smilškastei specifisku vērtību, lai noturīgās objektu kešatmiņas nodalītu smilškastes atslēgas
- piedāvā `WP_DEBUG` žurnalēšanu smilškastes `debug.log` un autentifikācijas atslēgas un sāļus, kas atvasināti no smilškastes ID

Sāknēšanas process definē katru no šīm konstantēm tikai tad, ja `wp-config.php` to vēl nav definējis. Standarta `wp-config.php` definē `WP_DEBUG` un visas atslēgas un sāļus, tāpēc šādā instalācijā smilškastes pieprasījumi izmanto resursdatora atkļūdošanas iestatījumu un atslēgas un sāļus ([4. problēma](https://github.com/inline0/rudel/issues/4)). Tā kā lietotāji tiek klonēti, resursdatora pieteikšanās sīkdatne var būt derīga smilškastē.

## Izpildlaika metadati

Rudel izpildlaika metadati paliek resursdatora WordPress MySQL tabulās:

```text
wp_rudel_environments
wp_rudel_worktrees
```

Šīs tabulas ir Rudel patiesais informācijas avots. Vides direktorijās ir pārvaldīti faili un artefakti, nevis izpildlaika reģistra stāvoklis.
