
# الإعداد

لدى Rudel نوعان من الإعدادات: إعدادات مخزنة في خيار `rudel_config` WordPress، وثوابت تحددها في `wp-config.php`.

## خيار `rudel_config`

تُخزَّن الإعدادات في مصفوفة واحدة في `wp_options` ضمن `rudel_config`. إلى أن يكتب شيء ما الخيار، تستخدم كل المفاتيح قيمها الافتراضية. تُتجاهل المفاتيح غير المعروفة وتُخزَّن القيم كأعداد صحيحة.

| المفتاح | الافتراضي | المعنى |
|-----|---------|---------|
| `max_sandboxes` | `0` | رفض إنشاء بيئة معزولة عند بلوغ هذا العدد. تعني `0` عدم وجود حد. |
| `max_disk_mb` | `0` | رفض إنشاء بيئة معزولة عندما تبلغ مساحة مجلداتها هذا العدد من الميغابايت. لا تُحتسب الجداول المستنسخة. تعني `0` عدم وجود حد. |
| `default_ttl_days` | `0` | مدة الصلاحية للبيئات المعزولة الجديدة التي أُنشئت دون `ttl_days` أو `expires_at`. تعني `0` عدم انتهاء الصلاحية. |
| `max_age_days` | `0` | يزيل التنظيف البيئات المعزولة الأقدم من هذه المدة. تعطّل `0` قاعدة العمر. |
| `max_idle_days` | `0` | يزيل التنظيف البيئات المعزولة التي لم يُسجّل فيها أي نشاط (طلب للبيئة أو لقطة) خلال هذه المدة. تعطّل `0` قاعدة الخمول. |
| `auto_cleanup_enabled` | `1` | تشغيل سياسة التنظيف كل ساعة عبر WP-Cron. |
| `auto_cleanup_merged` | `0` | تشغيل تنظيف الفروع المدمجة أيضًا عبر WP-Cron. |
| `expiring_environment_notice_days` | `0` | جمع البيئات المعزولة التي تنتهي صلاحيتها خلال هذا العدد من الأيام في كل تشغيل آلي، وتمريرها إلى الإجراء `rudel_after_automation_expiring_environments`. |
| `auto_snapshot_before_restore` | `1` | حفظ لقطة `pre-restore-...` قبل كل استعادة. |

يطبع `wp rudel status` القيم الحالية.

اكتب الخيار باستخدام WP-CLI. تحتفظ المفاتيح التي تتركها دون إدخال بقيمها الافتراضية:

```bash
wp option update rudel_config '{"max_age_days":14,"max_idle_days":3,"auto_cleanup_merged":1}' --format=json
```

أو من PHP:

```php
$config = new Rudel\RudelConfig();
$config->set( 'max_sandboxes', 20 );
$config->save();
```

تُجدول مهمة WP-Cron أو تُزال في الطلب التالي بعد التغيير. راجع [الأتمتة](https://rudel.inline0.dev/ar/docs/features/automation).

## الثوابت

عرّف هذه الثوابت في `wp-config.php` قبل سطر التمهيد Rudel.

| الثابت | الافتراضي | المعنى |
|----------|---------|---------|
| `RUDEL_CLI_COMMAND` | `rudel` | اسم أمر WP-CLI الأساسي. |
| `RUDEL_ENVIRONMENTS_DIR` | `wp-content/rudel-environments` | المجلد الذي يحتوي على مجلدات البيئات المعزولة. تُقدَّم أصول القالب دائمًا من `/wp-content/rudel-environments/{id}/themes`، لذا يجب أن يظل أي مجلد آخر متاحًا في ذلك URL. |
| `RUDEL_RUNTIME_TABLE_PREFIX` | `rudel_` | جزء من أسماء جدول Rudel بعد البادئة WordPress. راجع [حالة التشغيل](https://rudel.inline0.dev/ar/docs/features/runtime-state). |
| `RUDEL_RUNTIME_TABLE_ENVIRONMENTS` | | تجاوز الاسم الكامل لجدول البيئات، بعد البادئة WordPress. |
| `RUDEL_RUNTIME_TABLE_WORKTREES` | | تجاوز الاسم الكامل لجدول أشجار العمل، بعد البادئة WordPress. |
| `RUDEL_DB_DRIVER` | `auto` | برنامج تشغيل للوصول المستقل إلى `Rudel\Connection`: `auto` أو `mysqli` أو `pdo`. تستخدم طلبات WordPress دائمًا `$wpdb`. |
| `RUDEL_GIT_AUTHOR_NAME` | `Rudel` | اسم المؤلف الذي تكتبه Rudel في إعدادات Git لنسخة العمل إذا لم يكن لها `user.name`، ويُستخدم لعمليات الإيداع في `wp rudel push`. |
| `RUDEL_GIT_AUTHOR_EMAIL` | `rudel@localhost` | البريد الإلكتروني للمؤلف الذي تكتبه Rudel إذا لم تكن لنسخة العمل قيمة `user.email`. |

## الثوابت داخل طلب البيئة المعزولة

عندما يحدد الطلب بيئة معزولة، يعرّف التمهيد ثوابت يمكن للكود قراءتها. وأهمها:

| الثابت | القيمة |
|----------|-------|
| `RUDEL_ID` | معرّف البيئة المعزولة |
| `RUDEL_PATH` | مجلد البيئة المعزولة |
| `RUDEL_TABLE_PREFIX` | بادئة جداول البيئة المعزولة |
| `RUDEL_THEME_SLUG` | القالب المقدّم من البيئة المعزولة |
| `RUDEL_HOST_URL`، `RUDEL_ENVIRONMENT_URL` | عنوانا المضيف والبيئة المعزولة |
| `RUDEL_DISABLE_EMAIL` | `true`؛ البريد الصادر محظور |

فضّل استخدام طرق [API](https://rudel.inline0.dev/ar/docs/api)] مثل `Rudel::id()` بدلًا من قراءة الثوابت مباشرة.

يعرّف التمهيد أيضًا `WP_DEBUG` و`WP_DEBUG_LOG` و`WP_DEBUG_DISPLAY` و`WP_TEMP_DIR` و`WP_CACHE_KEY_SALT` ومفاتيح المصادقة والأملاح الثمانية، ولكن فقط تلك التي لم يعرّفها `wp-config.php` مسبقًا. راجع [تسجيل الأخطاء](https://rudel.inline0.dev/ar/docs/features/logging) و[العزل](https://rudel.inline0.dev/ar/docs/environments/isolation).
