मेरे सिर के ऊपर से आप विभिन्न वातावरण का उपयोग करके प्रत्येक सबडोमेन के लिए एक नया सर्वर उदाहरण चला सकते हैं।
लेकिन यह बहुत अच्छी तरह से स्केल नहीं करेगा।
हालांकि पहले कुछ google hits for multiple rails databases कुछ नए सुझावों को चालू करते हैं। उन लिंक में जानकारी एकत्र करने से एक सर्वर उदाहरण के लिए यह पूरी तरह से अवांछित समाधान प्रदान करता है।
आपको अपने डेटाबेस में प्रत्येक सबडोमेन के लिए डेटाबेस प्रविष्टि जोड़ने की आवश्यकता होगी .yml। फिर अपने एप्लिकेशन नियंत्रक
अपडेट में पहले_फिल्टर जोड़ें! उदाहरण गतिशील रूप से डेटाबेस कॉन्फ़िगरेशन को पुनः लोड करता है। दुर्भाग्यवश आपके सर्वर के आंतरिक के साथ गड़बड़ किए बिना अपडेट रेल को व्यापक बनाने का कोई अच्छा तरीका नहीं है। इसलिए प्रत्येक अनुरोध पर डेटाबेस कॉन्फ़िगरेशन को पुनः लोड करना होगा।
यह उदाहरण डेटाबेस में डेटाबेस प्रविष्टियों को मानता है। आईडीएल को सबडोमेन के नाम पर रखा गया है।
config/database.yml
login: &login
adapter: mysql
username: rails
password: IamAStrongPassword!
host: localhost
production:
<<: *login
database: mysite_www
subdomain1:
<<: *login
database: mysite_subdomain1
subdomain2:
<<: *login
database: mysite_subdomain2
...
एप्लिकेशन/नियंत्रक/application_controller.rb की आवश्यकता होती है 'ERB' before_filter: switch_db_connection
def switch_db_connection
subdomain = request.subdomains.first
ActiveRecord::Base.configurations = YAML::load(ERB.new(IO.read(Rails.configuration.database_configuration_file)).result)
ActiveRecord::Base.establish_connection("mysite_#{subdomain}")
end
जैसा कि मैंने कहा यह पूरी तरह से अपरीक्षित है। लेकिन मुझे किसी भी बड़ी समस्या का पता नहीं लगा है। अगर यह उम्मीद नहीं करता है कि यह आपको सही रास्ते पर रखता है।
+1 - निश्चित रूप से बहुत उपयोगी। क्या आप मुझे इस दृष्टिकोण के साथ प्रदर्शन हिट (यदि कोई ध्यान देने योग्य) का विचार दे सकते हैं? –
क्षमा करें मेरे पास इसके बारे में कोई बेंचमार्क नहीं है। इस समय मैं केवल एक निजी बीटा पर काम कर रहा हूं। – Kris
किसी के पास कोई अटकलें हैं कि क्या यह एक भयानक प्रदर्शन हिट करेगा या नहीं? मैं उत्पादन साइट के लिए कुछ ऐसा करना चाहता हूं। – NotDan