الفصل 1: مقدمة عن إعادة التحميل الحية

ما هي إعادة التحميل الحية؟

إعادة التحميل الحية هي ميزة تُمكِّن بيئة التطوير الخاصة بك من مراقبة التغييرات في الكود الخاص بك وإعادة تحميل تطبيقك تلقائيًا. عند حفظ ملف، يكتشف أداة إعادة التحميل الحية التغيير، تعيد بناء التطبيق، وتُعيد تشغيله. يُوفِّر هذا الأمر لك من العملية اليدوية لإيقاف الخادم، إعادة بناء التطبيق، وبدء تشغيله مرة أخرى بعد كل تغيير.

فوائد إعادة التحميل الحية لتطوير Go

إعادة التحميل الحية يمكن أن تسرِّع بشكل كبير عملية التطوير. بالنسبة لمطوري Go، الذين يعتادون تجميع كودهم قبل تشغيله، تعني إعادة التحميل الحية تحسين سير العمل مع ردود فعل فورية. من بين الفوائد:

  1. زيادة الإنتاجية: يمكن للمطورين البقاء في الزون دون انقطاع، حيث لا يحتاجون إلى إجراء إعادة بناء يدوية.
  2. توفير الوقت: إعادة التحميل الحية تقلل من وقت الانتظار لرؤية التغييرات في الكود مع reflected في تطبيق التشغيل.
  3. كشف الأخطاء: إعادة البناء وإعادة التشغيل الفورية تُسمح للمطورين بكشف الأخطاء وتصحيحها بشكل أسرع.
  4. تسهيل سير العمل: يندمج بشكل سلس في عملية التطوير، مما يجعلها أكثر سلاسة وفعالية.

الفصل 2: ما هو Air؟

Air هو أداة سطر أوامر مصممة لتوفير إمكانيات إعادة التحميل الحية لتطبيقات Go. يُراقب التغييرات في رمز المصدر الخاص بك ويُعيد بناء تطبيق Go الخاص بك تلقائيًا. هذا يعني أنه يمكنك التركيز أكثر على تطوير الميزات وأقل على المهام المتكررة.

الميزات

Air يوفر مجموعة من الميزات المناسبة لبيئة تطوير Go الحديثة:

  • إعادة البناء التلقائية: يكتشف تغييرات الملفات ويُشغل عمليات إعادة البناء.
  • أوامر بناء قابلة للتخصيص: يسمح لك بتخصيص أوامر البناء وفقًا لاحتياجات مشروعك.
  • استبعاد الدلائل الخاصة بالدلائل: يسمح لك باختيار الدلائل لاستبعادها من عملية المراقبة.
  • دعم للدلائل الجديدة: يمكنه مراقبة الدلائل الجديدة المضافة بعد بدء تشغيل Air.
  • سجلات ملونة وقابلة للقراءة: يعزز قراءة السجلات الخرجية بتلوين الألوان.
  • مُعاملات واجهة أوامر سطر الأوامر: يمكن تعيين حقول التكوين مباشرة من خلال مُعاملات واجهة أوامر سطر الأوامر لإجراء التعديلات السريعة.

يرجى الرجوع إلى سياق المطور للحصول على قائمة كاملة بالميزات والوظائف المتاحة مع Air.

الفصل 3: تثبيت air

3.1 التثبيت عبر go install

لتثبيت Air باستخدام أداة Go toolchain الإصدار 1.18 أو أعلى:

go install github.com/cosmtrek/air@latest

سيجعل هذا air متوفرًا في GOPATH/bin الخاص بك.

3.2 استخدام مشروع install.sh

طريقة أخرى هي من خلال نص تثبيت مُقدم:

curl -sSfL https://raw.githubusercontent.com/cosmtrek/air/master/install.sh | sh -s -- -b $(go env GOPATH)/bin

بعد التثبيت، قم بالتحقق من ذلك من خلال تشغيل:

air -v

3.3 تثبيتات خاصة (Docker/Podman ومسار مخصص)

بالنسبة لأولئك الذين يستخدمون Docker أو Podman، يوجد طريقة مبسطة لتضمين Air:

docker run -it --rm \
    -w "/path/to/project" \
    -v $(pwd):/path/to/project \
    -p port:port \
    cosmtrek/air

قم بتبديل /path/to/project بمسار مشروعك و port:port بتخطيط البورت المطلوب.

بديلًا عن ذلك، لتثبيت مسار مخصص:

curl -sSfL https://goblin.run/github.com/cosmtrek/air | PREFIX=/custom/path sh

الفصل 4: تكوين air لمشروع Go الخاص بك

4.1 فهم تكوين .air.toml

.air.toml هو ملف التكوين الخاص بـ Air. يسمح لك بتحديد الإعدادات المتعلقة بعملية البناء، ومراقبة الدلائل، وإخراج السجل. إليك نظرة عامة على الأقسام الرئيسية:

  • root: يحدد دليل العمل لـ Air.
  • build: يحتوي على إعدادات متعلقة بالبناء مثل الأوامر لتشغيلها قبل/بعد البناء، والأمر الرئيسي للبناء.
  • tmp_dir: الدليل الذي يُخزِّن فيه ملفات البناء المؤقتة.
  • log: يكوِّن إعدادات ملف السجل.
  • color: يخصص لون كل جزء من إخراج السجل.

4.2 إنشاء وتعديل ملف التكوين

لإنشاء ملف تكوين .air.toml الافتراضي، قم بتشغيل:

air init

سيقوم هذا بإنشاء ملف .air.toml بالإعدادات الافتراضية في الدليل الحالي الخاص بك. يمكنك بعد ذلك تعديله ليتناسب مع متطلبات مشروعك. يمكنك الرجوع إلى air_example.toml المُقدم في السياق كمرجع.

4.3 الكتابة فوق التكوين باستخدام معاملات سطر الأوامر

للاختبارات السريعة أو التغييرات البسيطة، يمكنك كتابة التكوين في .air.toml باستخدام معاملات سطر الأوامر. على سبيل المثال:

air --build.cmd "go build -o myapp" --build.bin "./myapp"

تتيح لك هذه المرونة تخصيص سلوك Air بسهولة دون تغيير ملف التكوين.

الفصل 5: تشغيل air في بيئة التطوير الخاصة بك

6.1 بدء air في مشروعك

للبدء باستخدام air في مشروعك، انتقل إلى الدليل الرئيسي لمشروعك في الطرفية الخاصة بك وقم بتنفيذ الأمر air. إذا كان ملف تكوين .air.toml موجوداً، سيستخدم air تلقائياً. وإلا، سيستخدم الإعدادات الافتراضية.

cd /path/to/your_project
air

نصيحة: إذا واجهت مشكلات في الإذن مع البرنامج التنفيذي air، تأكد من أن لديه أذونات التنفيذ اللازمة (chmod +x $(go env GOPATH)/bin/air).

6.2 تخصيص أوامر البناء والتشغيل باستخدام air

يمكنك تخصيص أوامر البناء والتشغيل المستخدمة بواسطة air عن طريق تعديل ملف التكوين .air.toml، وتحديداً ضمن القسم [build]. على سبيل المثال، لتغيير أمر البناء وتحديد ملف ثنائي مختلف:

[build]
cmd = "go build -o ./tmp/my-custom-binary ."
bin = "tmp/my-custom-binary"

بالإضافة إلى ذلك، تتيح أنماط البناء المعقدة أساساً للتمكّن من تنفيذ أوامر قبل البناء وبعد البناء على التوالي، باستخدام مصفوفات pre_cmd و post_cmd ضمن ملف التكوين.

نصيحة: مثال كامل على تكوين air

6.3 استبعاد الدلائل ومراقبة التغييرات

يتيح air أيضاً لك استبعاد الدلائل من مراقبة التغييرات، مما يمكن أن يكون مفيداً للدلائل التي تحتوي على محتويات أو اعتمادات لا تحتاج إلى تشغيل إعادة البناء.

لتكوين ذلك، قم بتحديث حقل exclude_dir في .air.toml:

[build]
exclude_dir = ["assets", "tmp", "vendor", "node_modules"]

يمكنك أيضاً توجيه air ليتضمن دلائل إضافية باستخدام include_dir، أو مراقبة امتدادات ملفات محددة باستخدام include_ext.

الفصل 6: الاستخدام المتقدم

6.1 إعداد air مع حاويات Docker

يمكن أن يسهل استخدام air ضمن حاوية Docker إعدادك للتطوير، خاصةً عند العمل مع الفرق. لتضمين air في بيئة Docker الخاصة بك، قم بتحديث ملف Dockerfile الخاص بك لتثبيت air ونسخ ملف .air.toml إلى الحاوية:

FROM golang:1.18-alpine AS builder

RUN go install github.com/cosmtrek/air@latest

WORKDIR /app

COPY go.mod .
COPY go.sum .
RUN go mod download

COPY . .

CMD ["air", "-c", ".air.toml"]

6.3 استخدام air في بيئة Docker-compose

لدمج air في خدمة يتم إدارتها بواسطة docker-compose، قم بتعريف خدمة في ملف docker-compose.yaml الخاص بك:

version: '3.8'
services:
  app:
    build: .
    ports:
      - "808:808"
    volumes:
      - .:/app
    command: ["air", "-c", ".air.toml"]

تأكد من أن توجيه "volumes" يقوم بتعيين الدليل الخاص بمشروعك بشكل صحيح إلى دليل العمل في الحاوية بحيث يمكن لـ air اكتشاف تغييرات الملفات.

الفصل 7: استكشاف الأخطاء الشائعة والأسئلة الشائعة

7.1 حل مشكلة command not found: air

إذا واجهت خطأ command not found: air، فإن ذلك يعني عادة أن البرنامج التنفيذي air ليس موجودًا في PATH النظام. لحل هذا، أضف مسار البرامج الثنائية لـ Go إلى متغير البيئة PATH:

export PATH=$PATH:$(go env GOPATH)/bin

7.2 المشاكل في بيئات WSL

في بيئة نظام تشغيل Windows Subsystem for Linux (WSL)، تأكد من تفادي الأحرف الخاصة في ملف .air.toml الخاص بك. على سبيل المثال، استخدم \\ لتفادي الشرطات العكسية في مسارات الملفات.

7.3 نصائح حول الترجمة الحية بدون تشغيل الثنائيات

إذا كنت ترغب في أن يقوم air بترجمة تطبيقك Go دون تشغيله، فيُرجى ضبط الـ cmd في القسم [build] في ملف .air.toml الخاص بك على أمر بدون تأثير (مثل /bin/true في أنظمة Unix):

[build]
cmd = "/bin/true"

بهذا الشكل، سيقوم air بملاحظة تغييرات الملفات وتشغيل عملية الترجمة، لكنه لن يحاول تشغيل الملف الثنائي الناتج.