2013-08-08 3 views
9

से अलग एक सक्रिय एडमिन या RailsAdmin के साथ DRY को कैसे रखा जाए, मैं JSON-only application बना रहा हूं, यह मूल रूप से कम मध्यमवर्ती और कम मॉड्यूल के साथ एक दुबला रेल है। यह एक आवेदन रेल 4 में बनाया जा रहा है।मुख्य अनुप्रयोग

मैं एक साधारण ऐप विकसित करना चाहता हूं जो मुख्य-ऐप के लिए डेटाबेस में डेटा को प्रशासित कर सके। इसके लिए मैं Active Admin या Rails Admin का उपयोग करना चाहता हूं। लेकिन दोनों विकल्प किसी भी तरह अंतर्निहित मॉडल और उनके सत्यापन, आवश्यकताओं और इस तरह के निर्माण के लिए उपयोग करते हैं।

इसका मतलब है कि मुझे मुख्य एप्लिकेशन और RailsAdmin एप्लिकेशन के बीच कम से कम मॉडल साझा करने की आवश्यकता है।

मैं यह कैसे करूँगा? क्या यह एकीकृत करने के बजाय, आपके मुख्य के बगल में एक अलग रेल ऐप में प्रशासन-एप्लिकेशन बनाने के तरीके पर एक अच्छी मार्गदर्शिका है?

एक साइड नोट के रूप में: व्यवस्थापक को मुख्य ऐप से अलग एप्लिकेशन में रखने का एक और अच्छा कारण है, लेकिन साझा डेटाबेस पर, निर्भरता के असंख्य हैं, ActiveAdmin जैसे मणि के साथ आता है।

यह भी ध्यान दें कि मुझे किसी भिन्न डोमेन या विभिन्न सर्वर पर व्यवस्थापक चलाने में दिलचस्पी नहीं है, लेकिन मुख्य रूप से मुख्य ऐप दुबला और केंद्रित रखने के लिए। और उन निर्भरताओं को रखने के लिए जिनके साथ ActiveAdmin की तरह कुछ मेरे मुख्य ऐप से आता है।


फ़ुटनोट:

  • न तो ActiveAdmin है और न ही RailsAdmin अपने आप में प्रदर्शन के लिए समस्याएं हैं। यह है कि उन्हें मिडलवेयर की आवश्यकता होती है, जबकि एक JSON- केवल रेल-ऐप को केवल बहुत कम मॉड्यूल, हेल्पर्स और मिडलवेयर की आवश्यकता होती है! रेल-एपीआई, इस तरह के एक पतले ढेर प्रदान करता है। प्रदर्शन व्यवस्थापक बनाम कोई व्यवस्थापक नहीं है, लेकिन पूर्ण-रेल बनाम रेल-एपीआई है।
  • प्रदर्शन मेरी मुख्य समस्या नहीं है, निर्भरता और ब्लोट है! अब मेरे पास एक रेल एप्लिकेशन है जो इतना पतला, केंद्रित और दुबला है, कि यह स्वयं को सिनात्रा ऐप्स के साथ माप सकता है :)। केवल तीन अतिरिक्त रत्न (प्रत्येक के कुछ निर्भरताओं के साथ) और मिडलवेयर का एक बहुत पतला ढेर के साथ, मैं बहुत आसानी से अपग्रेड, प्रबंधन और डिबग कर सकता हूं।

अधिक व्यावहारिक: मुझे क्या करना नहीं वसीयत (यह एक JSON-एपीआई, तो टोकन प्रमाणीकृत है) है, किसी भी विचार या टेम्पलेट इंजन नहीं है। कोई फॉर्मेटास्टिक, कोई पेपरक्लिप, रैमैजिक, कामारीरी (पेजर्स) और इतने पर और आगे नहीं। जब मैं "केवल एक व्यवस्थापक" खींचता हूं, तो सभी को मेरे ऐप में जोड़ा जाएगा।

+2

मैं मॉडल कक्षाओं को एक मणि में निकालने में देखता हूं जिसे आप दोनों ऐप्स में आवश्यक हो सकते हैं। मुझे डर है कि मैं विशिष्ट सलाह नहीं दे सकता, क्योंकि मैंने वास्तव में ऐसा कभी नहीं किया है, लेकिन सिद्धांत रूप में इसे काम करना चाहिए। आपको डेटाबेस साझा करने की आवश्यकता होगी।yml फ़ाइल किसी भी तरह, या बस सुनिश्चित करें कि यह दोनों स्थानों पर अद्यतित रहता है। –

+0

संकेत के लिए धन्यवाद। यह वास्तव में मेरे लिए एक बहुत अच्छा समाधान की तरह लगता है। – berkes

उत्तर

1

इस ब्लॉग पोस्ट एक दिलचस्प दृष्टिकोण का वर्णन है।

1

क्या आपने अपने आराम API की गति से ActiveAdmin जैसे टूल जोड़ने के प्रभाव को माप लिया है? यदि नहीं, तो यह मेरे लिए समयपूर्व अनुकूलन के मामले की तरह लगता है।

इस मामले में कि एपीआई की गति वास्तव में एक लाइब्रेरी द्वारा प्रभावित होती है जो लोड की जाती है लेकिन उपयोग नहीं की जाती है, तो आप कई अनुप्रयोग बना सकते हैं और मॉडलों को गिट सबमिशन में साझा कर सकते हैं। https://content.pivotal.io/blog/migrating-from-a-single-rails-app-to-a-suite-of-rails-engines

वे एक कंटेनर के रूप में एक लगभग खाली एप्लिकेशन का उपयोग और रेल इंजन के रूप में अपने वास्तविक क्षुधा माउंट:

+0

हां, मैंने किया, हालांकि किसी न किसी और बहुत ही वैज्ञानिक रूप से :)। पूर्ण रेल ढेर जोड़ने से उपयोग में स्मृति की मात्रा लगभग दोगुनी हो जाती है। यह स्टार्टअपटाइम (ज्यादातर उत्पादन के लिए अप्रासंगिक) को चौगुनी करता है और यह प्रतिक्रियाओं को कई बार धीमा करता है (कई)। लेकिन, जैसा कि मैंने कहा, वहां सभी निर्भरताओं को वास्तव में एक समस्या है। मेरे पास असंगतता के कारण अपडेट पर कई ऐप्स टूट रहे हैं उदा। jQuery संस्करण जो ActiveAdmin की आवश्यकता है, या अपलोडर जो RailsAdmin की आवश्यकता है। – berkes

+0

मुझे यह काफी दिलचस्प लगता है कि व्यवस्थापक का उपयोग करते समय उत्पादन में धीमे प्रतिक्रियाएं होती हैं। क्या आपने देखा है कि यह कहां से आता है? लेकिन जैसा कि मैंने पहले ही लिखा है और ज़ैच ने भी बताया है, बस अपने मॉडलों को गिट सबमिशन या एक मणि के माध्यम से साझा करें। बंडलर इसके साथ बहुत मददगार है। – phoet

+0

फूट और अन्य: मैंने प्रदर्शन के बारे में अपने बिंदुओं को थोड़ा स्पष्ट बनाने के लिए कुछ फुटनोट जोड़े हैं। – berkes

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