मेरे पास एक सुंदर मानक 2.0.3 Grails ऐप है और मैंने grails install-templates
निष्पादित किया है जो src/templates/scaffolding/निर्देशिका में files list.gsp, edit.gsp, आदि फ़ाइलों को स्थानांतरित करता है। जब इन्हें कोई परिवर्तन किया जाता है तो ये फ़ाइलें स्वचालित रूप से पुनः लोड नहीं होती हैं। क्या कोई तरीका है कि मैं इसे स्वचालित रूप से पुनः लोड करने के लिए प्राप्त कर सकता हूं, इसलिए जब भी मैं कोई परिवर्तन करता हूं तो मुझे ऐप को रोकना/शुरू करना नहीं पड़ता है? मैंने देखा स्रोतों को देखने की कोशिश की है लेकिन ऐसा लगता है कि प्लगइन विकास संबंधित है।स्वचालित रूप से टेम्पलेट फ़ाइलों को दोबारा लोड करें
उत्तर
आप सही हैं कि "देखे गए संसाधन" तंत्र केवल प्लगइन पर लागू होते हैं। इस के लिए सही ठीक
def watchedResources = "file:./src/templates/scaffolding/*"
जोड़ने के लिए कोर ScaffoldingGrailsPlugin.groovy
संशोधित करने के लिए हो सकता है और यह शायद उस प्रभाव के लिए एक JIRA प्रस्तुत करने के लायक है। इस बीच, आप इस व्यवहार को मचान प्लगइन में "इंजेक्ट" करने के लिए स्वयं की एक साधारण प्लगइन लिखकर काम कर सकते हैं। अपने आवेदन की BuildConfig.groovy
जोड़ने
import org.codehaus.groovy.grails.plugins.GrailsPlugin
class WatchScaffoldingGrailsPlugin {
def version = "0.1"
def grailsVersion = "2.0 > *"
def dependsOn = [:]
def pluginExcludes = [ "grails-app/views/error.gsp" ]
def title = "Watch Scaffolding Plugin"
def author = "Your name"
def authorEmail = ""
def description = '''\
Watches for changes to scaffolding templates and reloads dynamically-scaffolded
controllers and views.
'''
// URL to the plugin's documentation
def documentation = "http://grails.org/plugin/watch-scaffolding"
// watch for changes to scaffolding templates...
def watchedResources = "file:./src/templates/scaffolding/*"
// ... and kick the scaffolding plugin when they change
def onChange = { event ->
event.manager.getGrailsPlugin('scaffolding').notifyOfEvent(
GrailsPlugin.EVENT_ON_CHANGE, null)
}
// rest of plugin options are no-op
def onConfigChange = { event -> }
def doWithWebDescriptor = { xml -> }
def doWithSpring = { }
def doWithDynamicMethods = { ctx -> }
def doWithApplicationContext = { applicationContext -> }
def onShutdown = { event -> }
}
अब में
grails.plugin.location.'watch-scaffolding' = '../watch-scaffolding'
(या जो कुछ भी की जड़ के लिए अपने app की जड़ से उचित रिश्तेदार पथ है: grails create-plugin watch-scaffolding
करें और फिर प्लगइन वर्णनकर्ता के लिए निम्नलिखित का उपयोग करें प्लगइन) और आपके मचान टेम्पलेट परिवर्तन स्वचालित रूप से पुनः लोड करना शुरू कर देना चाहिए।
(यह पर Grails 2.1 परीक्षण किया जाता है, मैं शुरू में influences उपयोग करने की कोशिश, लेकिन यह कोई प्रभाव नहीं था, हालांकि मचान प्लगइन में एक onChange
घटना के लिए मजबूर कर परिणाम की आवश्यकता थी।)
GRAILS-755, इस के अनुसार तय किया गया है, लेकिन मुझे नहीं लगता कि यह इसलिए है क्योंकि वे मेरे लिए भी पुनः लोड नहीं करते हैं।
से Jira, यहाँ एक संभावित समाधान है कि:
सांत्वना प्लगइन का उपयोग करें, और गतिशील scaffolded दृश्य कैश को साफ़ करने के लिए इस कमांड चलाएँ:
डीईएफ़ scaffoldedView = org.codehaus .groovy.grails.scaffolding.view.ScaffoldingViewResolver.scaffoldedViews.clear()
उसके बाद, अगली बार मैं एक पृष्ठ का अनुरोध, यह इसके कैश में नहीं मिल रहा है, और इस तरह घ वापस चला जाता है इसे फिर से बनाने के लिए isk।
यह कोड मचान कैश flushes। आप इसके लिए एक विशिष्ट व्यवस्थापक कार्रवाई बना सकते हैं:
org.codehaus.groovy.grails.scaffolding.view.
ScaffoldingViewResolver.scaffoldedViews.clear()
यह एक अच्छा त्वरित तय है, लेकिन मैं कुछ और अधिक स्वचालित की तलाश में था। धन्यवाद! –
- 1. emacs में क्लोजर फ़ाइलों को दोबारा लोड करें
- 2. जार फ़ाइलों को स्वचालित रूप से अपडेट करें
- 3. एक मॉडल विशेषता को दोबारा लोड करें
- 4. टैग फ़ाइल को दोबारा लोड करें Vim
- 5. एकल jqGrid पंक्ति को दोबारा लोड करें?
- 6. एक बेवकूफ तरीके से एक हास्केल नेटवर्क कनेक्शन को स्वचालित रूप से दोबारा कनेक्ट करें
- 7. बाल विंडो से पैरेंट विंडो को दोबारा लोड करें
- 8. स्वचालित रूप से pathforResource
- 9. स्वचालित रूप से आर पैकेज में डेटा कैसे लोड करें?
- 10. गिट को स्वचालित रूप से प्रतिबद्धता में संपादक में पिछली टिप्पणी कैसे लोड करें?
- 11. रूट के बिना django wsgi स्क्रिप्ट को दोबारा लोड करें
- 12. Log4Net स्वचालित रूप से लॉग फ़ाइलों को हटा सकते हैं?
- 13. स्वचालित रूप से डाउनलोड
- 14. स्वचालित रूप से फ़ाइल अद्यतन
- 15. विजुअल स्टूडियो को स्वचालित रूप से समाधान फ़ाइलों को बनाने से रोकने के लिए कैसे करें
- 16. साइंटे को स्वचालित रूप से फ़ाइल को फिर से लोड करने के लिए कैसे मजबूर करें?
- 17. Emacs को स्वचालित रूप से TAGS फ़ाइल को फिर से लोड करने के लिए कैसे करें?
- 18. Emacs को पुनरारंभ किए बिना कॉन्फ़िगरेशन को दोबारा लोड करें
- 19. स्वचालित रूप से
- 20. लोड फ़ाइलों को लोड करें और अन्य फ़ाइलों से कार्यों को चलाएं
- 21. बाहरी फ़ाइल से jQuery-टेम्पलेट लोड करें?
- 22. फ़ाइलों को बनाने, दोबारा निर्देशिका बनाने
- 23. पायथन में फ़ाइलों को दोबारा खोलें?
- 24. स्वचालित रूप से चयनित दिनांक को
- 25. एक निश्चित समय पर स्वचालित रूप से एक वेब पेज को फिर से लोड कैसे करें?
- 26. UICollectionView हेडर या फ़ूटर को दोबारा लोड करें?
- 27. स्वचालित रूप से इंटरनेट से कनेक्ट करें
- 28. स्वचालित रूप से पीडीएफ फ़ाइलों को प्रकाशित करने के लिए विजुअल स्टूडियो को कैसे सेट करें
- 29. एम्बेडेड संसाधन से लोड टेम्पलेट
- 30. इतिहास में जोड़ने के बिना IFRAME को दोबारा लोड करें
यह .gsp फ़ाइलों के लिए बहुत अच्छा काम करता है लेकिन किसी कारण से Controller.groovy फ़ाइल को नहीं लगता है। कोई विचार? –
मुझे एक ही चीज़ दिखाई देती है - 'Controller.groovy' को बदलने से' ऑन चेंज 'ईवेंट नहीं होता है। दस्तावेज़ीकरण से पता चलता है कि 'देखे गए स्रोतों 'के लिए विशेष हैंडलिंग है जो' ग्रोवी 'फाइलें हैं:" यदि देखे गए संसाधन एक ग्रोवी फ़ाइल निर्दिष्ट करते हैं, जब इसे बदला जाता है तो इसे स्वचालित रूप से पुनः लोड किया जाएगा और ईवेंट ऑब्जेक्ट में चेंज क्लोजर में पारित किया जाएगा " , और मुझे लगता है कि चूंकि 'Controller.groovy' सामान्य ज्ञान में ग्रोवी फ़ाइल नहीं है (यह संकलित और पुनः लोड नहीं होता है) यह घटना को फायर नहीं कर रहा है। –
अधिक दिलचस्प बात यह है कि, एक कंटेंट टेम्पलेट बदलना _after_ बदलकर 'Controller.groovy' को कंट्रोलर को फिर से लोड किया जाना चाहिए (किसी भी दृश्य में कोई भी बदलाव एक पूर्ण पुनः-मचान ट्रिगर करता है)।लेकिन ऐसा नहीं है। इस मामले में मेरा संदेह यह है कि मचान नियंत्रक _is_ वास्तव में पुनर्जीवित हो रहा है, लेकिन पुनर्जन्मित वर्ग का पुराना नाम समान नाम है और Grails उसी क्लासलोडर में संकलित करने का प्रयास कर रहा है, क्लासलोडर हमें पुरानी 'कक्षा' एक नए के बजाय वस्तु ... –