2013-02-20 56 views
5

क्लोजर के साथ रिंग/जेट्टी का उपयोग करते हुए स्वचालित कोड पुनः लोडिंग, जब मैं अपने कोड में कोई भी परिवर्तन करता हूं, तो मुझे अपना पूरा JVM पुनः लोड करना होगा।रिंग/जेटी

क्या जेटी एसिंक्रोनस को मेरे कोड में बदलावों के साथ रखने का कोई तरीका है, इसलिए मैं बस ब्राउज़र विंडो को रीफ्रेश कर सकता हूं और तुरंत परिवर्तन कर सकता हूं?

विशेष रूप से, मैं HTML पार्सिंग के लिए हिचक का उपयोग कर रहा हूं, और यह मुख्य रूप से लेआउट में बदल रहा है।

लेआउट परिवर्तन स्वचालित रूप से संकलित और रीफ्रेश पर ब्राउज़र में उपलब्ध होने पर यह एक बड़ा टाइमवेवर होगा।

क्या किसी के पास इस बारे में कोई जानकारी है? क्या कोई समाधान है?

उत्तर

8

आप lein-ring विशेष रूप से :auto-reload? और :auto-refresh? विकल्पों को देखना चाहेंगे।

7

अंगूठी में ऑटो-रीलोड सुविधाओं के विकल्प के रूप में, यदि आप एक प्रतिकृति-सक्षम विकास प्रणाली का उपयोग कर रहे हैं, जैसे emacs + nrepl या counterclockwise (यदि आप नहीं करते हैं, तो आपको इसे अंतर देखने के लिए प्रयास करना चाहिए बनाता है), आप सीधे संपादक से चल रहे सिस्टम में विशिष्ट परिभाषाओं या फ़ाइलों का फिर से मूल्यांकन कर सकते हैं। आईएमओ + + ऑटो-) रीलोड से बचाने के लिए यह एक बेहतर वर्कफ़्लो है। मैं emacs/nrepl.el का उपयोग करता हूं और मैंने कभी ऑटो-रीलोडिंग के लिए कोई उपयोग नहीं किया है।

+4

+1 - बस एक तरीका है कि fn आप पर हैकिंग कर रहे हैं के मूल्य को कैश नहीं है में अपने संचालकों लिखने के लिए सुनिश्चित हो, और आप कर सकते हैं आरईपीएल से एक एम्बेडेड जेटी को फायर करें और जब आप सर्वर को पुनरारंभ किए बिना फिर से मूल्यांकन करते हैं तो अपने परिवर्तन तुरंत दिखाई दें। लगभग पहली बार जादू की तरह लग रहा था। :) – Alex

1

lein-ring का उपयोग क्यों नहीं करें?

यहां नमूने project.clj है:

(defproject tutorial1 "0.1.0-SNAPSHOT" 
    :description "FIXME: write description" 
    :url "http://example.com/FIXME" 
    :license {:name "Eclipse Public License" 
      :url "http://www.eclipse.org/legal/epl-v10.html"} 
    :repl-options {:port 11111} 
    :plugins [[lein-ring "0.8.8"]] 
    :ring {:handler tutorial1.core/handler 
      :auto-reload? true 
      :auto-refresh? true 
      } 
    :dependencies [[org.clojure/clojure "1.5.1"] 
        [ring/ring-core "1.2.1"] 
        [ring/ring-jetty-adapter "1.2.1"] 
        [ring-refresh "0.1.1"]])