
# Izoliavimas

Rudel yra užklausos pasirenkamų perdangų sistema. Pasirinkta užklausa naudoja smėlio dėžės duomenų bazės lenteles ir temos failus, tačiau veikia pagrindinės aplinkos WordPress dieginyje.

## Atskiri kiekvienoje smėlio dėžėje

### WordPress lentelės

Kiekviena smėlio dėžė gauna sugeneruotą lentelių prefiksą: pagrindinės aplinkos prefiksą ir pirmus septynis šešioliktainius smėlio dėžės ID MD5 simbolius.

```text
wp_b65338d_options
wp_b65338d_posts
wp_b65338d_users
```

Rudel pakeičia WordPress lentelių prefiksą prieš baigiant WordPress įkėlimą, todėl kiekviena užklausa smėlio dėžėje skaito ir įrašo jos lentelių kopijas.

### Naudotojai

`users` ir `usermeta` lentelės klonuojamos kartu su kitomis. Sukūrimo metu smėlio dėžėje yra pagrindinės aplinkos naudotojai ir jų slaptažodžiai; vėliau smėlio dėžėje sukurti, pakeisti ar ištrinti naudotojai pagrindinės aplinkos neveikia, o pagrindinės aplinkos pakeitimai smėlio dėžės nepasiekia.

### Aktyvios temos failai

Pasirinkta tema nukopijuojama į smėlio dėžės katalogą:

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

Jei tema yra dukterinė, Rudel nukopijuoja ir pagrindinę temą, kad šablono ryšys liktų galiojantis. Smėlio dėžė visada pateikia kuriant įrašytą temą; temos pakeitimas pačioje smėlio dėžėje nieko nekeičia.

## Bendra su pagrindine aplinka

- WordPress branduolys
- papildinių failai
- įkelti medijos failai

Pagrindinėje aplinkoje įdiegtas ar atnaujintas papildinys įdiegiamas arba atnaujinamas visose smėlio dėžėse. Aktyvūs papildiniai saugomi parinkčių lentelėje, todėl kiekvienos smėlio dėžės aktyvinimo būsena atskira. Smėlio dėžėje įkelti failai patenka į pagrindinės aplinkos įkėlimų katalogą. Taip smėlio dėžės sukuriamos greitai ir išvengiama visuotinio `WP_CONTENT_DIR` pakeitimo.

Palikite Rudel aktyvų kiekvienoje smėlio dėžėje. Pašto blokavimas ir temos perdanga veikia per šį papildinį, o jį išjungus, kai pasirinkta smėlio dėžė, iš bendro `wp-config.php` pašalinama ir įkrovos eilutė, todėl smėlio dėžių pasirinkimas išjungiamas visame dieginyje ([issue #13](https://github.com/inline0/rudel/issues/13)).

## Smėlio dėžės pasirinkimas

HTTP užklausos pasirenka smėlio dėžę per:

- `X-Rudel-Environment` antraštę (senasis alias `X-Rudel-Sandbox`)
- `rudel_environment` slapuką (senasis alias `rudel_sandbox`)

Rudel niekada nenustato ir neištrina slapuko. Norėdami grįžti į pagrindinę aplinką, ištrinkite slapuką; administravimo juostos elementas Sandbox pateikia nuorodą į pagrindinės aplinkos URL, bet slapuką palieka ([issue #10](https://github.com/inline0/rudel/issues/10)).

WP-CLI komandos pasirenka smėlio dėžę per:

- `RUDEL_ENVIRONMENT` aplinkos kintamąjį
- `--url`, kurio pagrindinis kompiuteris prasideda smėlio dėžės ID, pavyzdžiui, `--url=http://alpha-3be7.example.test`

Pasirinkimo mechanizmas nėra autentifikuotas. Bet kuris klientas, galintis pasiekti svetainę ir nusiųsti galiojantį smėlio dėžės ID, patenka į tą smėlio dėžę, o smėlio dėžių ID (pavadinimas ir keturi šešioliktainiai simboliai) lengva atspėti. Smėlio dėžės pasirinkymo nelaikykite prieigos kontrolės riba; viešą pagrindinę aplinką apsaugokite žiniatinklio serverio arba tinklo lygmeniu.

## Numatytoji užklausos elgsena

Pasirinktoje užklausoje Rudel:

- blokuoja siunčiamus el. laiškus per `pre_wp_mail` filtrą
- nustato `WP_TEMP_DIR` į smėlio dėžės `tmp` katalogą
- nustato `WP_CACHE_KEY_SALT` į smėlio dėžei skirtą reikšmę, kad nuolatinės objektų talpyklos raktai nesusimaišytų
- siūlo `WP_DEBUG` registravimą smėlio dėžės `debug.log` bei autentifikavimo raktus ir druskas, išvestus iš smėlio dėžės ID

Įkrovos procesas apibrėžia kiekvieną iš šių konstantų tik tada, jei `wp-config.php` jos dar neapibrėžė. Standartinis `wp-config.php` apibrėžia `WP_DEBUG` ir visus raktus bei druskas, todėl tokiame dieginyje smėlio dėžės užklausos naudoja pagrindinės aplinkos derinimo nustatymą, raktus ir druskas ([issue #4](https://github.com/inline0/rudel/issues/4)). Kadangi naudotojai taip pat klonuojami, pagrindinės aplinkos prisijungimo slapukas gali galioti smėlio dėžėje.

## Vykdymo metaduomenys

Rudel vykdymo metaduomenys lieka pagrindinės aplinkos WordPress MySQL lentelėse:

```text
wp_rudel_environments
wp_rudel_worktrees
```

Šios lentelės yra Rudel pagrindinis patikimos informacijos šaltinis. Aplinkų kataloguose yra valdomi failai ir artefaktai, o ne vykdymo registro būsena.
