GraphQL روبي. ماذا عن الأداء؟
GraphQL، مثل أي تقنية، لها مشاكلها، بعضها ناتج بشكل مباشر عن البنية وبعضها الآخر مطابق لما نراه في أي تطبيق آخر. ومع ذلك، فإن الحلول...
تعرّف على المزيد حول دور الحامل في نظام روبي البيئي من خبيرنا وارتقِ بمهاراتك في الروبي.
أثناء العمل مع أطر عمل الويب روبي من الشائع أن نأخذ الأمور كأمر مسلم به. نحن نعلم أن إطار العمل سيتعامل مع طلبات HTTP وينفذ منطق البرمجيات الوسيطة لنا. عندما نصبح أكثر فضولًا نبدأ في التساؤل عما وراء الكواليس، وهنا نبدأ في سماعنا عن Rack.
إن المشروع يوصف بأنه "واجهة خادم ويب معيارية من روبي". Rack هي الواجهة التي تتيح لنا إنشاء تطبيقات ويب توحّد واجهة برمجة التطبيقات لخوادم الويب وأطر الويب والبرامج الوسيطة.
كما هو موضح في الصورة أعلاه، يعمل Rack كوسيط بين تطبيق الويب الخاص بنا وخادم التطبيقات، فهو يغلف طلبات HTTP في أبسط
طريقة ممكنة.
تطبيق الحامل هو كائن روبي (وليس فئة) يستجيب ل اتصل بـ
. يأخذ وسيطًا واحدًا فقط، وهو البيئة وإرجاع مصفوفة غير مجمدة من
ثلاث قيم بالضبط
و الجسم.
يمكنك العثور على المواصفات التفصيلية لتطبيق الحامل هنا.
تتطلب "رف
صنف RackApp
تعريف الاستدعاء(env)
الحالة = 200
الرؤوس = { 'نوع المحتوى' => 'text/html' }
الجسم = ['<h1>تطبيق الحامل الخاص بي<h1>']
[الحالة، العناوين، الجسم]
نهاية
النهاية
تربط المعالجات خوادم الويب بـ Rack. يتضمن Rack معالجات لـ Thin و WEBrick و FastCGI و CGI و SCGI و LiteSpeed. يجب على كل خادم تطبيق يدعم Rack
توفير معالج لإنشاء الاتصال (لدى Puma معالج خاص به)، وعادةً ما يتم تنشيط المعالجات عن طريق استدعاء MyHandler.run(myapp)
. يمكن تمرير تجزئة اختيارية ثانية لتضمين التكوين الخاص بالخادم.
استخدام خادم التطبيق الرقيق
رف::معالج::Thin.run(التطبيق)
الملف الافتراضي لإضافة التكوين هو config.ru
ويمكنك تنفيذه باستخدام الرفع
في وحدة التحكم الخاصة بك.
يسمح لنا Rack بإنشاء تطبيقات البرمجيات الوسيطة (تطبيقات بين تطبيق الويب الرئيسي وخادم التطبيق). يتم ربط تطبيقات البرمجيات الوسيطة هذه معًا وتنفيذها بالتتابع.
يجب أن تقوم البرمجيات الوسيطة للحامل بتنفيذ جميع مواصفات تطبيق الحامل واستيفاء النقاط التالية:
صنف RackMiddleware
تعريف تهيئة(التطبيق)
التطبيق = التطبيق
نهاية
تعريف استدعاء(env)
@app.call(env)
النهاية
النهاية
الآن بعد أن عرفنا الأساسيات، أصبحنا جاهزين لإنشاء أول تطبيق Rack مع Rack Middleware وتشغيله باستخدام Puma (خادم التطبيقات).
تأكد من حصولك على الرف
الجوهرة و بوما
جوهرة مثبتة.
أداة تثبيت الأحجار الكريمة الرف
تثبيت جوهرة الأحجار الكريمة بوما
أولاً، علينا إنشاء ملف يسمى config.ru
وسيستفيد هذا الملف من
Rack::Builder DSL لتشغيل التطبيق وإضافة البرنامج الوسيط.
ضمن config.ru
ملف، سنضيف تطبيق الرف البسيط الذي حددناه في
الأقسام السابقة.
# config.ru
صنف RackApp
تعريف الاستدعاء(env)
الحالة = 200
الرؤوس = { { 'نوع المحتوى' => 'نص/متل'}
الجسم = ['<h1>تطبيق الحامل الخاص بي<h1>']
[الحالة، العناوين، الجسم]
نهاية
النهاية
سنقوم هنا بإجراء تعديل بسيط على برنامجنا الوسيط البسيط والآن سيضيف برنامج الخادم إلى نص HTML الخاص بنا بعد تنفيذه.
# config.ru
صنف RackMiddleware
تعريف تهيئة(التطبيق)
التطبيق = التطبيق
إنهاء
تعريف استدعاء(env)
الحالة والرؤوس والجسم = @app.call.call(env)
الجسم << env['SERVER_SOFTWARE']
[الحالة، الرؤوس، الجسم]
نهاية
النهاية
كخطوة أخيرة، سنقوم بتشغيل الخادم ونرى تطبيقنا يعمل. لدينا config.ru
سيبدو الملف على النحو التالي:
# config.ru
صنف RackApp
تعريف الاستدعاء(env)
الحالة = 200
الرؤوس = { { 'نوع المحتوى' => 'نص/متل'}
الجسم = ['<h1>تطبيق الحامل الخاص بي<h1>']
[الحالة، العناوين، الجسم]
نهاية
النهاية
صنف RackMiddleware
تعريف تهيئة(التطبيق)
@التطبيق = التطبيق
نهاية
تعريف استدعاء(env)
الحالة والرؤوس والجسم = @app.call.call(env)
الجسم << env['SERVER_SOFTWARE']
[الحالة، الرؤوس، الجسم]
نهاية
النهاية
استخدم RackMiddleware
تشغيل RackApp.new
في السطور الأخيرة، نحدد البرمجيات الوسيطة باستخدام الاستخدام
ونقوم بتشغيل التطبيق باستخدام اركض.
نحن مستعدون للتنفيذ الرفع
في وحدة التحكم الخاصة بنا ونرى الخادم قيد التشغيل. يمكننا التحقق من المنفذ الذي يعمل فيه تطبيقنا ويجب أن نرى شيئًا كهذا بعد الوصول إليه:
من الجيد في بعض الأحيان العودة إلى الأساسيات والتعرف على الرؤى حول التكنولوجيا التي نعمل بها. يمنحنا تعلُّم الرف نظرة عامة واضحة على البنية ويكشف لنا "السحر" الكامن وراء أطر عمل الويب روبي.