سؤال

أنا أكتب تطبيق ويب باستخدام Ring و Clojure. أنا أستخدم محول Jetty لخادم التطوير و Emacs/Slime لـ IDE. على الرغم من أن Wrap-Reload يساعد ، فإن Run-Jetty يحجب جلسة الوحل الخاصة بي وأود أن أكون قادرًا على بدء/إيقافها عند الإرادة دون الحاجة إلى تشغيلها في جلسة طرفية منفصلة. من الناحية المثالية ، أود تحديد وكيل الخادم والوظائف الخادم والخادم الذي سيبدأ/يوقف الخادم داخل الوكيل. هل هذا ممكن؟

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

المحلول

عادة ما يكون لدي خط في تطبيق الحلقة الخاص بي يشبه ما يلي:

(defonce server (run-jetty #'my-app {:port 8080 :join? false}))

هذا يمنع قفل الاستبدال. كما يتيح لي إعادة ترجمة هذا الملف دون القلق من إعادة تعريف الخادم الخاص بي. كما يتيح لك التفاعل في الاستبدال مثل:

user=> (.stop server)

و

user=> (.start server)

نصائح أخرى

تحتوي وثائق الرصيف على بعض المعلومات حول إغلاق رشيق من رصيف. ربما لا تكون هذه معلومات كافية ولكنها قد تبدأ.

لم أبدأ اللعب مع compojure بعد ، لكنني أفضل العمل مع Tomcat. إنه أكثر ملاءمة. من بين أشياء أخرى ، هناك واجهة برمجة تطبيقات موثقة جيدًا لبدء تشغيلها وإغلاقها ، فهي تستمع لأمر إيقاف التشغيل على منفذ مخصص ؛ هناك ant المهام للقيام بذلك ، ويمكن بالطبع استدعاء من تطبيق Java أيضًا. أنا فقط لا أعرف أي نوع من Magic Compojure الذي يقوم به توصيل REPL إلى مثيل تشغيل لحاوية الويب ، وإذا/كيف يحدث إعادة تحميل الفئة التلقائية ... نأمل أن يتمكن شخص آخر من تقديم المزيد من المعلومات.

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