أنا قادر على إنجاز المهام التي أرغب فيها باستخدام وحدة تحكم Rails. ومع ذلك، تحتاج هذه المهام إلى التشغيل بشكل دوري ولا أريد كتابة كل أمر على حدة في وحدة تحكم Rails. كيف يمكنني تشغيل نص Ruby برمجي على مثيل Discourse المستضاف ذاتيًا؟
بالإضافة إلى ذلك، سيقرأ النص البرمجي ملف CSV، أين يجب أن أضع ملف CSV هذا بحيث يظل متاحًا داخل حاوية Docker ولن يختفي بعد التحديثات؟
إذا كان هذا “طوال عمر المجتمع” محتملاً، فمن المفيد كتابة المكون الإضافي الخاص بك للقيام بذلك. الأمر ليس أصعب بكثير من الدخول إلى وحدة تحكم Rails (فوضوي وأكثر خطورة!).
سيسمح لك ذلك أيضًا بتخزين الكود وإدارته بشكل صحيح وتحسينه بمرور الوقت.
بدلاً من ذلك، يمكنك تعريف مهمة Rake، ولكن ستحتاج إلى تخزينها في مكان ما، وربما أيضًا في مكون إضافي!
نعم، كانت صياغة سيئة. ما قصدته هو ما يلي: أحتاج إلى تشغيل هذه المهمة عدة مرات طوال فترة حياة المجتمع. ومع ذلك، لا توجد فترة زمنية ثابتة ويتم تحديد وقت الحاجة إلى تشغيلها بواسطة حدث خارجي ما. لذلك سأقوم بتشغيل المهمة بنفسي عدة مرات دون أي فجوة زمنية منتظمة بينها.
لذا قد تكون مهمة “rake” هي الحل المناسب لك. تم تصميمها خصيصًا لتشغيل النصوص المخصصة. ومع ذلك، سأضعها في إضافة، حيث يمكنك بعد ذلك إدارتها بشكل جيد على GitHub ولن تنسى أبدًا مكان وضعها أو تحذفها عن طريق الخطأ.
يمكنك إما جعله مهمة “rake” أو وضعه في مهمة يجب عليك تشغيلها يدويًا من /sidekiq
يمكنك إما تحميل ملف csv الخاص بك من تجربة المستخدم وتمريره بقيمة إعداد كما هو مقترح، أو تحميله في موضوع وجعل البرنامج النصي الخاص بك يحصل على أحدث مشاركة/تحميل في الموضوع، أو تحميله إلى /var/discourse/shared/standalone/xxx.csv والوصول إليه كـ /shared/xxx.csv في البرنامج النصي. أو ربما يجب عليك القيام بكل شيء باستخدام واجهة برمجة التطبيقات بدلاً من تحميل ملف csv.
أنت لا تصف ما تحاول القيام به، فقط حلك الذي قد لا يكون الأفضل.