2012-04-29 17 views
8

मेरे पास एक सिनात्रा एप्लिकेशन है जो एपीआई कॉल का जवाब देता है, और एक रेल एप्लिकेशन जो रिपोर्ट को नियंत्रित करता है और ग्राफ और वेबसाइट जैसी सभी सुंदर सामग्री को नियंत्रित करता है। दोनों को मॉडल के एक सामान्य सेट (जैसे खाते, साइट्स इत्यादि) तक पहुंच की आवश्यकता हैसिनात्रा और रेल के बीच मॉडल कोड साझा करना

मेरी समस्या है: मैं दो अनुप्रयोगों के बीच कोड को कुशलता से कैसे साझा करूं? उदाहरण के लिए, यदि मैं सिनात्रा में लेखा मॉडल संपादित कर रहा हूं, तो मैं रेल ऐप में समान परिवर्तनों को डुप्लिकेट करना याद नहीं रखना चाहता हूं। मैं रेल रैक माउंटिंग का उपयोग नहीं करना चाहूंगा क्योंकि दो अनुप्रयोग अलग क्लस्टर पर होंगे।

के बारे में मैं StackOverflow पर सुझाव देखा है:

  • Git मॉड्यूल
  • सिमलिंक (विंडोज साथ काम नहीं करेंगे जो मेरे सहकर्मी का उपयोग करता है)
  • रेल प्लगइन्स (मुझे शक है इस सिनात्रा के साथ काम करेगा)
  • रूबी रत्न (मुझे लगता है कि यह सिर्फ मॉडल डेटा के लिए भी overkill है, लेकिन है कि बस मैं हूँ)

दो क्षुधा एक विभिन्न भंडारों में फिर से। असल में, मैं पहले एपीआई विकसित कर रहा हूं, फिर बाद में रेल ऐप में खाता विशिष्ट तर्क डाल रहा हूं (मुख्य रूप से क्योंकि रेलों में बहुत अधिक पुस्तकालय हैं जो इन तरह की चीजों को विकसित करना आसान बनाता है)।

आप इस समस्या को कैसे हल करेंगे?

+0

क्या ऐप्स एक ही भंडार या अलग-अलग हैं? –

+0

वे अलग-अलग भंडारों में हैं :) क्या आप अनुशंसा करेंगे कि वे उसी भंडार पर हों? – parasquid

+1

नहीं, बस सोच रहा था क्योंकि विकल्प थोड़ा सा बदलते हैं। व्यक्तिगत रूप से मुझे लगता है कि गिट मॉड्यूल या एक निजी मणि सबसे अच्छे विकल्प हैं। –

उत्तर

4

मैं एक मणि, या बल्कि कुछ मणि के लिए जाना चाहूंगा, आपको इसे प्रकाशित करने की आवश्यकता नहीं है, और फिर बंडलर git dependencies का उपयोग करें। हम ट्रैविस सीआई में यह भारी करते हैं और यह विशेष रूप से काम करता है, खासकर बंडलर में नई "स्थानीय" गिट निर्भरताओं के साथ 1.2: http://gembundler.com/man/bundle-config.1.html#LOCAL-GIT-REPOS

+0

बस स्पष्ट करने के लिए, इसका मतलब है कि मुझे दो अनुप्रयोगों के बीच मणि में समानताएं निकालना होगा, है ना? यदि ऐसा है, तो क्या आपको एक रिपोजिटरी के बारे में पता चल जाएगा जिसे मैं देख सकता हूं और उस तकनीक का उपयोग करने से सीख सकता हूं? :) – parasquid

+0

हां, यही मेरा मतलब था। एक विकल्प होगा कि सिनात्रा ऐप को एक ही प्रोजेक्ट में रेल ऐप हो, या सिनात्रा ऐप रेल ऐप लोड करे। उदाहरण के लिए https://github.com/travis-ci/travis-core देखें। –

+0

मुझे लगता है, बहुत बहुत धन्यवाद! :) – parasquid