5 أمثلة على أفضل استخدامات روبي
هل تساءلت يومًا ما الذي يمكننا فعله مع روبي؟ حسناً، ربما تكون السماء هي الحد الأقصى، ولكن يسعدنا أن نتحدث عن بعض الحالات المعروفة بشكل أو بآخر...
يمكن أن تجلب Pub/Sub العديد من الفوائد للمشروع - يمكنها أن تجعل الشيفرة نظيفة وتفصل الخدمات وتجعلها قابلة للتطوير بسهولة. تعرّف على المزيد حول Pub/Sub في المقالة التالية وارفع مستوى مشروعك!
Ruby on Rails (Rails، RoR) هو إطار عمل معروف لتطبيقات الويب مكتوب بلغة روبي لغة البرمجة. حانة/فرعية هو اسم مختصر لأنماط تصميم البرمجيات يسمى نشر-اشتراك-اشتراك. سأشرح كيف يمكن التعامل مع الاتصال بين مكونات البرامج في Rails بواسطة Pub/Sub.
حانة/فرعية هو نمط تصميم برمجي يوفر الاتصال من خدمة إلى خدمة. الخدمة
يستلزم أحد الدورين: الناشر (الذي ينتج) أو المتلقي (الذي يستهلك). ما هو
يتم تحديد المنتج المراد استهلاكه كحدث أو رسالة أو إشعار. في
في سياق هذه المقالة، يتم استخدامهما بالتبادل للإشارة إلى نفس الشيء.
الخدمة التي تنتج لا تعرف من يستهلك. الخدمة التي تستهلك لا
معرفة أصل الرسالة. يمكن أن يظلوا مجهولين لبعضهم البعض. وهو يختلف عن
قوائم انتظار الرسائل، حيث غالبًا ما يعرف المكون الذي يرسل الرسالة وجهتها
- يسمح لك هذا النمط من المراسلة بإرسال الرسائل في أي مكان. تعد هذه الآلية من أساسيات
من حانة/فرعية وهذا يعني أنهما منفصلان.
وللتعبير عن مصالحهما المشتركة، يجب أن يكون هناك تفاهم مشترك بينهما. ولذلك,
وكلا الدورين له آلية ضمنية للعصا حيث يقوم منتج الرسالة و
مستهلك الرسالة يلتقي. تسمى هذه الآلية بالموضوع أو الاشتراك أو الموضوع. وهي
مسؤول عن تصنيف الرسائل إلى موضوعات، فهو في الأساس عامل تصفية للرسائل بدون حالة.
تعمل المواضيع كمحطات بث. يقوم الناشر بإنتاج الرسالة إلى الموضوع,
يتلقى المشتركون الرسالة على الفور من الموضوع. بسبب فصل
الخدمات، فإن الطريقة الأكثر فعالية لتبادل الرسائل هي التعامل معها بشكل غير متزامن.
بشكل افتراضي، لا يوجد في Rails أي نفقات عامة لأنماط تصميم البرامج لتمرير الرسائل بين المكونات. يستخدم المطورون المعيار البرمجة الموجهة للكائنات نموذج (OOP): تمرير المعلمات إلى الدوال، وطلب فئات عن القيم.
عندما يكون التطبيق غير معقد إلى حد ما، قد يكون ذلك كافياً. عندما ينمو التطبيق، على سبيل المثال، يجب أن تتم بعض العمليات بشكل غير متزامن، فإن المشروع يحتاج إلى التجريد الذي يحل سير عمل البيانات هذا. فبدلاً من إعادة اختراع العجلة، يمكن للمطورين تنفيذ حانة/فرعية لسد هذا النقص في التجريد.
تمت كتابة أمثلة من المصدر في Rails باستخدام مكتبة
حانة/فرعية على القضبان (في تسمية روبي، تسمى المكتبة جوهرة): ستجد المزيد من التفاصيل في الملف التعريفي للأحجار الكريمة. يتكون التنفيذ من وحدات نمطية:
يصف منطق العمل من أجل توفير سياق لـ Pub/Sub، وبالتالي جعل الكود.
الوحدة النمطية الإشعارات
تمديد PubSub::المجال
نهاية
تقارير الوحدة النمطية
تمديد PubSub::المجال
نهاية
إنها فئة تصف ما حدث. أعلن عن اسم الفئة على أنه وصف ذاتي لما حدث قدر الإمكان، على سبيل المثال: ألغيت، تغيرت، تم إنشاؤها، تم تدميرها، تم إرسالها، تم تحديثها. يمكن أن تبدو أسماء الأحداث مثل ProfitAndLossStatementCreatedEvent، وهو ما يعني أنه تم إنشاء بيان مالي.
صنف التقارير:::بيان الربح والخسارة تم إنشاؤه حدث < PubSub::DomainEvent
السمة:profit_and_loss_statement_id، أنواع::صارم::عدد صحيح
نهاية
فئة قادرة على إصدار الأحداث. يوضح المثال إنشاء تقرير خدمة. عندما يتم إنشاء التقرير بنجاح، قم بإصدار حدث إنشاء ذلك التقرير.
صنف التقارير:::خدمة بيان الأرباح والخسائر
تضمين PubSub::Emit
تعريف تنفيذ
emit(:report_ring_and_loss_statement_statement_created, profit_and_loss_statement_statement_id: id) إذا كانت النتيجة.ok؟
نهاية
نهاية
يجب تنفيذ هذه الفئة استجابةً للتعامل مع حدث ما.
وحدة الإشعارات
صنف ReportsProfitAndLossAndLossStatementCreatedHandler < PubSub:::DomainEventEnventHandler
تعريف الاستدعاء
ReportMailer.profit_and_loss_statement(بيان الربح والخسارة).deliver_now
إنهاء
خاص
تعريف بيان_الربح_الخسارة_الربح_الخسارة
ProfitAndLossStatement.find(event_data.profit_and_loss_statement_statement_id)
نهاية
النهاية
النهاية
ترتبط الأحداث بمعالجاتها من خلال الاشتراكات.
الإشعارات:
التقارير_ربح_و_خسارة_تقارير_مُنشأة: غير متزامن
Pub / sub ليس نهجًا شائعًا في Ruby in Rails. كما تم تقديمه في المقالة، يمكن لهذا النمط أن يجلب العديد من الفوائد للمشروع - يمكن أن يجعل الشيفرة نظيفة ويفصل الخدمات ويجعلها قابلة للتطوير بسهولة.