मैं एक परियोजना मैं पर काम कर रहा हूँ के लिए cabal-dev
बाहर कोशिश कर रहा हूँ; परियोजना एक पुस्तकालय है, और cabal-dev
इसके बारे में एक सैंडबॉक्स संस्करण के निर्माण के लिए एक महान काम करता है - लेकिन मैं अपने कार्यप्रवाह के भाग के साथ परेशानी ...एक गैर-सैंडबॉक्स, गैर-वैश्विक (उपयोगकर्ता?) पैकेज के साथ "कैबल-देव ghci" का उपयोग कैसे करें?
मैं एक स्क्रिप्ट है, scratch.hs
है, जो (पूर्व cabal-dev
आ रही हैं) मैं सामान की कोशिश करने के लिए ghci
में लोड होगा। निश्चित रूप से मैं किस सुविधा पर काम कर रहा हूं, इस पर निर्भर करता है कि scratch.hs
की सामग्री समय के साथ बदलती है। scratch.hs
लाइब्रेरी कोडबेस का हिस्सा नहीं है, यह केवल मेरे व्यक्तिगत स्क्रैचस्पेस है जबकि मैं इस पर काम कर रहा हूं।
अब, मेरे सैंडबॉक्स लोड होने के साथ ghci
सत्र प्राप्त करने के लिए, मैं केवल cabal-dev ghci
कर सकता हूं, और उसके बाद scratch.hs
लोड कर सकता हूं। समस्या यह है कि (डिजाइन द्वारा, और समझदारी से) है मेरे उपयोगकर्ता पैकेज डेटाबेस शामिल नहीं है, इसलिए यदि संकुल से scratch.hs
संदर्भ मॉड्यूल जो मेरे लाइब्रेरी की build-depends
(जो अनुचित नहीं है - यह लाइब्रेरी का हिस्सा सब के बाद नहीं है) में नहीं हैं, उन संकुल दिखाई नहीं देते हैं, और इसलिए मैं इस तरह के रूप में त्रुटि मिली:
scripts/scratch.hs:8:8:
Could not find module `Data.Aeson.Generic':
It is a member of the hidden package `aeson-0.3.2.11'.
Perhaps you need to add `aeson' to the build-depends in your .cabal file.
Use -v to see a list of the files searched for.
Failed, modules loaded: none.
जहां, इस मामले में, scratch.hs
आयात करने के लिए Data.Aeson.Generic
लेकिन aeson
में मेरी लाइब्रेरी की build-depends
(काफी ठीक से), लेकिन है नहीं है चाहता है मेरे उपयोगकर्ता पैकेज डेटाबेस में।
तो कैसे मैं इस को हल करने के कर सकते हैं? मैं इन श्रेणियों में से किसी में जवाब कल्पना कर सकते हैं, लेकिन शायद वहाँ श्रेणियों मैं नहीं छूटा है कर रहे हैं:
एक तरह से (चुनिंदा) को
cabal-dev
द्वारा बनाई sandbox के साथ संयोजन के रूप में मेरे उपयोगकर्ता पैकेज डेटाबेस से संकुल का उपयोग करें। (शायद अपने हीcabal-dev ghci
शैली स्क्रिप्ट रोलिंग?)कैसे मेरे कार्यप्रवाह में सुधार करने के तो समस्या सिर्फ चली जाती है पर एक सुझाव।
मैं मैं सिर्फ विश्व स्तर पर पैकेज स्थापित कर सकता है पता है, लेकिन मैं इस तरह से मेरी वैश्विक पैकेज डेटाबेस अपवित्र करने के लिए अनिच्छुक नहीं हूं (और cabal-dev
इस स्पष्ट रूप से हतोत्साहित)।
सभी सलाह के लिए बहुत धन्यवाद।
मुझे आश्चर्य है ... क्या आप: ghci के भीतर से सेट-पैक कर सकते हैं? (या विकल्प का नाम जो आपके पैकेज डेटाबेस को चुनता है?) –
* माथे थप्पड़ मारता है * - मैंने ऐसा क्यों नहीं सोचा? हाँ, यह काम करता है - धन्यवाद। मैं इसे '.ghci' में भी जोड़ सकता हूं और यह स्वचालित रूप से हो सकता है। धन्यवाद, डैनियल! – gimboland
ओह, झूठ बोलो। नहीं, यह काम नहीं करता है। यह पहले काम करने के लिए दिखाई दिया था, लेकिन ऐसा इसलिए था क्योंकि मेरे प्रोजेक्ट का टेस्ट-सूट एज़न का उपयोग करता है, इसलिए यह मेरी। कैबल फ़ाइल में संदर्भित है और इस प्रकार सैंडबॉक्स में लाया गया है, ऐसा लगता है कि, वास्तव में 'कैबल-देव ghci' द्वारा लोड किया गया है, यही कारण है कि मुझे इसे लोड करने के लिए 'सेट-पैकेज एसेन' की आवश्यकता थी। यदि मैं इसे हटा देता हूं, तो वास्तव में ': सेट-पैकेज एसेन' _doesn't_ उपयोगकर्ता पैकेज डेटाबेस संस्करण लोड नहीं करता है ("'एसेन को संतुष्ट नहीं कर सकता"), इसलिए मैं वापस आ गया हूं जहां मैंने शुरू किया था (सिवाय इसके कि जो भी देखा गया है पिछले 3 घंटों में यह पृष्ठ सोचता है कि समस्या हल हो गई है)। – gimboland