
# Yalıtım

Rudel, istekle seçilen bir katman sistemidir. Seçili bir istek, ana makinenin WordPress kurulumunda çalışmaya devam ederken yalıtılmış ortam veritabanı tablolarını ve tema dosyalarını kullanır.

## Her yalıtılmış ortam için ayrıdır

### WordPress tabloları

Her yalıtılmış ortama, ana makinenin öneki ile yalıtılmış ortam kimliğinin MD5 değerindeki ilk yedi onaltılık karakterinden oluşan bir tablo öneki atanır.

```text
wp_b65338d_options
wp_b65338d_posts
wp_b65338d_users
```

Rudel, WordPress başlatmayı bitirmeden önce WordPress tablo önekini değiştirir; böylece yalıtılmış ortam isteğindeki her sorgu yalıtılmış ortam kopyalarını okur ve yazar.

### Kullanıcılar

`users` ve `usermeta` tabloları diğerleriyle birlikte klonlanır. Yalıtılmış ortam, oluşturulduğu anda ana makinenin kullanıcıları ve parolalarıyla başlar; sonrasında yalıtılmış ortamda oluşturulan, değiştirilen veya silinen kullanıcılar ana makineyi etkilemez ve ana makinedeki değişiklikler yalıtılmış ortama yansımaz.

### Etkin tema dosyaları

Seçilen tema yalıtılmış ortam dizinine kopyalanır:

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

Tema bir alt temaysa Rudel, şablon ilişkisini geçerli tutmak için üst temayı da kopyalar. Yalıtılmış ortam her zaman oluşturulurken kaydedilen temayı sunar; yalıtılmış ortamda tema değiştirmek hiçbir etki yaratmaz.

## Ana makineyle paylaşılanlar

- WordPress çekirdeği
- eklenti dosyaları
- yüklenen medya dosyaları

Ana makineye yüklenen veya güncellenen bir eklenti, her yalıtılmış ortam için yüklenir veya güncellenir. Hangi eklentilerin etkin olduğu seçenekler tablosunda saklanır; dolayısıyla etkinleştirme durumu her yalıtılmış ortama özeldir. Yalıtılmış ortamda yapılan yüklemeler ana makinenin yüklemeler dizinine kaydedilir. Bu, yalıtılmış ortam oluşturmayı hızlandırır ve `WP_CONTENT_DIR`'yi genel olarak değiştirmekten kaçınır.

Her yalıtılmış ortamda Rudel eklentisini etkin tutun. Posta engelleme ve tema katmanı eklentiden çalışır; yalıtılmış ortam seçiliyken eklentiyi devre dışı bırakmak, paylaşılan `wp-config.php` dosyasındaki bootstrap satırını da kaldırarak tüm kurulum için yalıtılmış ortam seçimini kapatır ([13. sorun](https://github.com/inline0/rudel/issues/13)).

## Yalıtılmış ortam seçme

HTTP istekleri bir yalıtılmış ortamı şu yollarla seçer:

- `X-Rudel-Environment` başlığı (eski diğer adı `X-Rudel-Sandbox`)
- `rudel_environment` çerezi (eski diğer adı `rudel_sandbox`)

Rudel çerezi hiçbir zaman ayarlamaz veya temizlemez. Ana makineye dönmek için çerezi silin; yönetim çubuğundaki Yalıtılmış ortam öğesi ana makinenin URL adresine bağlantı verir, ancak çerezi olduğu gibi bırakır ([10. sorun](https://github.com/inline0/rudel/issues/10)).

WP-CLI komutları bir yalıtılmış ortamı şu yollarla seçer:

- `RUDEL_ENVIRONMENT` ortam değişkeni
- ana bilgisayar adı yalıtılmış ortam kimliğiyle başlayan bir `--url`; örneğin `--url=http://alpha-3be7.example.test`

Seçici kimlik doğrulaması yapmaz. Siteye erişebilen ve geçerli bir yalıtılmış ortam kimliği gönderen her istemci o yalıtılmış ortama erişir; yalıtılmış ortam kimliklerini (ad ve dört onaltılık karakter) tahmin etmek kolaydır. Yalıtılmış ortam seçimini bir erişim denetimi sınırı olarak görmeyin; herkese açık bir ana makineyi web sunucusu veya ağ düzeyinde koruyun.

## İstek varsayılanları

Seçili bir istek için Rudel şunları yapar:

- `pre_wp_mail` filtresiyle giden e-postayı engeller
- `WP_TEMP_DIR` değerini yalıtılmış ortamın `tmp` dizinine ayarlar
- `WP_CACHE_KEY_SALT` değerini, kalıcı nesne önbelleklerinin yalıtılmış ortam anahtarlarını ayrı tutmasını sağlayan, yalıtılmış ortama özgü bir değere ayarlar
- `WP_DEBUG` günlüğünü yalıtılmış ortamın `debug.log` değerine ve yalıtılmış ortam kimliğinden türetilen kimlik doğrulama anahtarları ile tuzlarına ayarlar

Bootstrap, bu sabitlerin her birini yalnızca `wp-config.php` henüz tanımlamamışsa tanımlar. Standart bir `wp-config.php`, `WP_DEBUG` ile tüm anahtarları ve tuzları tanımlar; bu tür bir kurulumda yalıtılmış ortam istekleri ana makinenin hata ayıklama ayarını, anahtarlarını ve tuzlarını kullanır ([4. sorun](https://github.com/inline0/rudel/issues/4)). Kullanıcılar da klonlandığı için ana makinenin oturum açma çerezi yalıtılmış ortamda geçerli olabilir.

## Çalışma zamanı meta verileri

Rudel çalışma zamanı meta verileri ana makinenin WordPress MySQL tablolarında kalır:

```text
wp_rudel_environments
wp_rudel_worktrees
```

Bu tablolar Rudel için tek doğruluk kaynağıdır. Ortam dizinleri yönetilen dosyaları ve yapıtları içerir; çalışma zamanı kayıt defteri durumunu içermez.
