2013-10-29 8 views
5

गो कोड समापन समर्थन के साथ Revel ढांचे का उपयोग करना संभव है। जहां तक ​​मुझे पता है कि gocode उपयोगिता को कार्य करने के लिए कोड को पीकेजी सबफ़ोल्डर में लाइब्रेरी में संकलित करने की आवश्यकता है, लेकिन ढांचा फ्लाई पर संकलन करता है।रीवेल फ्रेमवर्क और गो कोड पूर्णता

मैं इस विषय पर खो गया हूं। उचित उपपृष्ठों के लिए जाने के लिए सही तरीके से कॉल करना उचित तरीका होगा? ऐसा लगता है कि यह मेरे परिप्रेक्ष्य से ऐसा करने का सबसे शानदार तरीका नहीं है।

आशा है कि कोई मुझे सही दिशा में इंगित कर सकता है।

संपादित करें: समस्या केवल उन स्रोतों पर केंद्रित है जो मैं अपने रीवेल एप्लिकेशन के हिस्से के रूप में लिखता हूं। डाउनलोड किए गए पैकेजों में स्वत: पूर्णता है

EDIT2: यह अब तक का सबसे अच्छा समाधान है - go get आपके प्रोजेक्ट के app/tmp सबफ़ोल्डर पर निष्पादन। इसलिए यदि आपकी परियोजना को my_project कहा जाता है तो आप go get my_project/revel/app/tmp जैसे कुछ कॉल करेंगे क्योंकि इस फ़ोल्डर में प्रोजेक्ट के लिए मुख्य फ़ंक्शन शामिल है, यह सभी निर्भरताओं को खींच देगा और उन्हें संकुल में बनाएगा। यदि tmp फ़ोल्डर मौजूद नहीं है तो आपको अपनी परियोजना पर revel run करना होगा और अपना वेब ऐप खोलना होगा ताकि यह फ्लाई पर बनाया जा सके। उम्मीद है कि यह कम से कम थोड़ा सा मदद करता है। मैं अभी भी एक बेहतर विकल्प के लिए खुला हूं :)

+0

गो लिखने के लिए आप क्या उपयोग कर रहे हैं? सब्लिमे टेक्स्ट + गोस्ब्लूम प्लगइन, उदाहरण के लिए, जब आप अपने पैकेज आयात में जोड़ते हैं तो "स्वतः पूर्ण" कार्यक्षमता प्रदान करने के लिए अपने GOPATH पर स्थापित संकुल का उपयोग करता है। Revel, "get gettable" होने के नाते, वैसे ही काम करना चाहिए। – elithrar

+1

मैं लाइटिड का उपयोग कर रहा हूं, GOPATH सामान्य रूप से मेरे वर्कस्पेस पर सेट है। जाने के द्वारा स्थापित किए गए पैकेज स्वतः पूर्ण हो जाते हैं। समस्या तब होती है जब आप रीवेल एप्लिकेशन लिखना शुरू करते हैं। जब मैं एप्लिकेशन चलाता हूं तो मेरे द्वारा लिखे गए स्रोत पीकेजी उपफोल्डर में संकलित नहीं होते हैं इसलिए मेरे कोड के लिए कोई स्वत: पूर्णता नहीं है। क्षमा करें अगर वह पोस्ट से स्पष्ट नहीं था, तो मैं समस्या को स्पष्ट करने के लिए इसे संपादित कर दूंगा। –

उत्तर

0

आप अपने $ GOPATH/src फ़ोल्डर के अंदर रहने के लिए आवेदन की ज़रूरतों को पूरा करते हैं और फिर कोड पूर्णता आपके वेब ऐप के लिए काम करेगी।

+0

यह/src फ़ोल्डर में रहता है। 'gocode' उपयोगिता /। pkg सबफ़ोल्डर और GOOS और GOARCH चर में बनाए गए * .a लाइब्रेरी के आधार पर कोड पूर्णता करता है जो सबफ़ोल्डर को/pkg फ़ोल्डर में परिभाषित करता है जहां 'gocode देखेंगे' –

0

अद्यतन

या तो संकलन की रेवेल के harness द्वारा प्रक्रिया बदल गया है या gocode सुधार किया गया है। लेकिन अब सबकुछ बॉक्स से बाहर काम करता है। कोई अतिरिक्त प्रयास की आवश्यकता नहीं है।

पुराना जवाब

मैं एक ही समस्या का सामना करना पड़ा है। मेरा समाधान आपके EDIT 2 वर्कअराउंड का एक संशोधित संस्करण है। मेरी app/init.go में मैं कहा:

import "os/exec" 

और

// Build the project packages on app start so it's possible to use autocomplete. 
revel.OnAppStart(func() { 
    if revel.Config.BoolDefault("mode.dev", false) { 
     go func() { 
      _, err := exec.Command("go", "get", "bitbucket.org/USERNAME/PROJECT/app/tmp").Output() 
      if err != nil { 
       revel.ERROR.Printf("failed to 'go get' project, error: %v", err) 
      } 
     }() 
    } 
}) 

तो, अब देव मोड में यह स्वचालित रूप से रेवेल परियोजना के हर रखता पर सभी संकुल recompiles।

संबंधित मुद्दे