यहाँ हमारे बुनियादी आवश्यकताओं है का अनुकूलित संस्करण चलाएँ:एक रेल आवेदन
- हम एक आधार रेल आवेदन, है जो सक्रिय रूप से बनाए रखा जा रहा है।
- सर्वर अपने ग्राहकों की आधार में रहते हैं और एक अलग डोमेन पर चलाना चाहिए:
- हम इस एप्लिकेशन का अनुकूलित संस्करण, यह देखते हुए कि प्रदान करना चाहते हैं।
- डेटासेंटर में अपनी निगरानी के लिए एक विशिष्ट लॉगिंग उपकरण है।
ऐसा करने के लिए है कि, मैं कई विकल्प देख सकते हैं कि लक्ष्य को प्राप्त करने:
- Git शाखा
Rails::Engine
Rails::Application
सबसे स्पष्ट जवाब होगा पूर्ण लचीलापन के लिए गिट शाखा बनें।
हालांकि मुझे यकीन नहीं है कि यह एक अच्छा विचार है, क्योंकि कोड आधार काफी हद तक साझा किया जाता है और मुख्य लाइन में बहुत अधिक गतिविधियां होती हैं - रिबेस/विलय के साथ पकड़ना अतिरिक्त परेशानी हो सकती है।
हम यथासंभव मूल और अनुकूलित संस्करणों को रद्द करना चाहते हैं। दूसरे शब्दों में, हम मूल और अनुकूलित के बीच जितना संभव हो उतना संघर्ष करना चाहते हैं।
Rails::Engine
या Rails::Application
एक करीबी विचार (मैं रेल इंजन से परिचित नहीं हूँ) तरह लग रहा था, लेकिन मुझे समझ नहीं आता कि कैसे एक ही स्थान पर OurApp::Application
और OurCustomizedApp::Application
है और विश्व स्तर पर और गतिशील रूप से उन दोनों के बीच स्विच करने के लिए।
शायद यह है करने के लिए अच्छा होगा:
- कस्टम initializers, नियंत्रक और एक अलग निर्देशिका में देखा गया ओवरराइड करने के लिए (या पैच) निर्दिष्ट करने के लिए मूल
- क्षमता जो एप्लिकेशन (मूल या इच्छित एक वातावरण चर द्वारा बूट करने के लिए)
RAILS_APP
- अलग कॉन्फ़िग फ़ाइलों की तरह है, तो जैसे:
config/database.yml
config/customer1/database.yml
- Capistrano के लिए एक ही
deploy.rb
(पी उपयोग करने की क्षमता होने के लिए robablyconfig/servers.yml
औरconfig/customer1/servers.yml
साथ भूमिकाओं और आईपी परिभाषित करने के लिए?)
वहाँ प्रथाओं/सम्मेलनों हमारी आवश्यकताओं के लिए है? कोई सलाह?
हमारे ऐप्स रूबी 1.9.2 + रेल 3.0.3 पर चलते हैं।
अद्यतन
हम एक Git शाखा के रूप में यह शुरू कर दिया। हमने config/branch
पर फ़ाइल बनाने के लिए एक रेक कार्य बनाया है जिसमें "मास्टर" या "कस्टमाइज्ड" जैसे टेक्स्ट शामिल हैं, और application.rb बूटस्ट्रैप पर इसे पढ़ता है।database.yml
या servers.yml
जैसे Configs अब config/mainline/
या config/customized/
में रहते हैं, और application.rb तदनुसार उन्हें संभालता है।
config.paths.config.database = "config/#{branch}/database.yml"
सही नहीं है, लेकिन अभी पर्याप्त है। जब हम इसे करने का बेहतर तरीका खोजते हैं तो मैं अपडेट करूंगा।
हम गिट शाखा के साथ समाप्त हो गए हैं और यह अब तक काफी अच्छा काम कर रहा है। धन्यवाद! – kenn