سؤال

لدي تطبيق Rails 2.0.2 يعمل باستخدام قاعدة بيانات postgresql.سيستقبل الجهاز البيانات على منفذ TCP.لقد قمت بالفعل بتشفير خادم Ruby متعدد مؤشرات الترابط TCP لتلقي الطلبات، ولكنني بحاجة إلى تشغيل هذا الرمز جنبًا إلى جنب مع تطبيق Rails الخاص بي.

لذا أعتقد أنني بحاجة إلى معرفة كيفية توسيع عملية جديدة داخل ريلز، أو كيفية إنشاء سلسلة عمليات تعمل على تشغيل حلقة خادم tcp المترابطة الخاصة بي.يمكن أن يتمتع خادم Ruby TCP الخاص بي بإمكانية الوصول إلى ActiveRecord، لكن هذا ليس ضروريًا (يمكنني دائمًا إنشاء طلب http، ونشر البيانات المستلمة إلى خادم Rails الأصلي)

هل كانت مفيدة؟

المحلول

لماذا تعقيد الأمور؟ما عليك سوى تشغيل التطبيقات - خادم TCP وتطبيق Rails - جنبًا إلى جنب.

إما أن تسحب طبقة النموذج (و ActiveRecord) إلى خادم TCP الخاص بك (قد يعمل svn::externals أو Piston بشكل جيد لذلك) وتسمح بالاتصال بين التطبيقين من خلال قاعدة البيانات، أو تجعل تطبيق Rails هو "الرئيسي" و التواصل معها عبر HTTP كما تقترح.

لتحويل تطبيق Ruby إلى خدمة Windows، راجع قسم win32-service جوهرة متاحة من win32utils مشروع: http://rubyforge.org/projects/win32utils/

نصائح أخرى

أحتاج إلى تشغيل خادم TCP كخدمة على خادم Windows 2003.أستخدم mongrel_service لتحميل Rails كخدمة، ولا أعرف طريقة لفعل الشيء نفسه مع كود روبي الخالص.إذا كان بإمكاني تشغيل خادم tcp الخاص بي عند تشغيل الكمبيوتر، فسأبحث في الحل الذي تقدمه (والذي يبدو جيدًا مع ذلك).

لا تجعل تطبيق Rails الخاص بك مسؤولاً عن حالة تطبيق خادم TCP.إنه في الحقيقة ليس مناسبًا تمامًا للقيام بذلك - وربما لا يوجد سبب يدعوهم إلى البدء في خطوة ثابتة مع بعضهم البعض.استخدم monit أو شيء ما لمراقبة كلتا عمليتي الخادم.

من المستحيل الجزم بذلك دون معرفة المزيد عن بنية تطبيقك، ولكنني أقترح استخدام ActiveRecord وقاعدة البيانات للتواصل بين خوادمك بدلاً من HTTP.بهذه الطريقة، حتى لو كان تطبيق Rails الخاص بك معطلاً لسبب ما، فلا يزال بإمكان خادمك الآخر معالجة الطلبات.من المحتمل أيضًا أن يكون أكثر سرعة بعض الشيء.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top