दिलचस्प पोस्ट
अजगर साजिश सरल हिस्टोग्राम ने बिन्दु डेटा को दिया एक एजेक्स कॉल php के माध्यम से डाउनलोड फ़ाइल ओएस एक्स पर पायथन की डिफ़ॉल्ट संस्करण को 3.3 कैसे सेट करें? बढ़ाना तर्क जीआईटी लॉग आउटपुट XML, JSON, या YAML को? यूटीसी और लोकल (यानी पीएसटी) समय के बीच SQL 2005 में प्रभावी ढंग से परिवर्तित करना JQuery के सत्यापन प्लगइन का उपयोग कर रेडियो बटन समूह की मान्यता JavaFX लाइनचर्ट हॉवर मान वसंत आंशिक अद्यतन ऑब्जेक्ट डेटा बाइंडिंग एंड्रॉइड: गतिविधि / क्लासनोटफ़ाउंड अपवाद को इन्स्तांत करने में असमर्थ नेटब्लॉक को गिराने के लिए एल्गोरिथ्म की ज़रूरत है सुपरसेट श्रेणी की सूची में रेलल्स 3 में कोई भी संबद्ध रिकॉर्ड के साथ रिकॉर्ड खोजना चाहते हैं संपत्ति फ़ोल्डर से एक पीडीएफ फाइल पढ़ें यूनिक्स शेल कमांड का सामान्य सिंटैक्स क्या है? बिना ज़्यादा शून्य के स्वरूपण अजगर में पायथन

रेल में कई डेटाबेस

क्या यह किया जा सकता है? एक एकल अनुप्रयोग में, जो SQLite के साथ कई प्रोजेक्ट प्रबंधित करता है मैं चाहता हूं कि प्रत्येक प्रोजेक्ट के लिए एक अलग डाटाबेस होना चाहिए जो मेरा ऐप प्रबंधन कर रहा है .. तो एक समान रूप से संरचित डेटाबेस की कई प्रतियां हैं, लेकिन उनमें से भिन्न डेटा के साथ मैं यूआरआई पर पैरामीटर पर आधार का उपयोग करने वाली कॉपी का चयन करूँगा

यह 1 सुरक्षा के लिए किया जाता है .. मैं इस प्रकार की प्रोग्रामिंग में एक नया हूँ और मैं यह नहीं चाहता कि किसी कारण के लिए किसी अन्य परियोजना पर काम करते समय भ्रष्ट हो जाता है .. 2. आसान बैकअप और संग्रह पुरानी परियोजनाएं

Solutions Collecting From Web of "रेल में कई डेटाबेस"

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

यहां कुछ संदर्भ दिए गए हैं:

  • ActiveRecord: विभिन्न मॉडलों में एकाधिक डेटाबेस के लिए कनेक्शन
  • रेल पर रूबी में एकाधिक डेटाबेस कनेक्शन
  • मैजिक मल्टी-कनेक्शन

यदि आप प्रत्येक रेल उदाहरण को नियंत्रित और कॉन्फ़िगर करने में सक्षम होते हैं, और आप संसाधनों को बर्बाद कर सकते हैं, क्योंकि उनके पास स्टैंडबाय पर हैं, अपने आप को कुछ परेशानी से बचाएं और बस डेटाबेस को बदल दें। यदि आप प्रदर्शन के बारे में चिंतित हैं तो यह दृष्टिकोण इसे कटौती नहीं करेगा।

केवल एक डेटाबेस पर एक एकल अनन्य तालिका के लिए बंधे मॉडल के लिए आप मॉडल के अंदर स्थापित_कनेक्शन कॉल कर सकते हैं:

establish_connection "database_name_#{RAILS_ENV}" 

जैसा कि यहां बताया गया है: http://apidock.com/rails/ActiveRecord/Base/establish_connection/class

अन्य डेटाबेस से तालिकाओं का उपयोग करते हुए आपको एक डाटाबेस और अन्य विभिन्न मॉडलों से तालिकाओं का उपयोग करने के कुछ मॉडल होंगे।

यदि आपके पास अलग-अलग डेटाबेस पर समान टेबल हैं, और एक एकल मॉडल द्वारा साझा किया गया है, तो ActiveRecord आपकी सहायता नहीं करेगा। 2009 में वापस मुझे रेल परियोजनाओं 2.3.8 का उपयोग करते हुए इस पर एक परियोजना की आवश्यकता थी। मेरे पास प्रत्येक ग्राहक के लिए एक डाटाबेस था, और मैंने डेटाबेस को उनके आईडी के साथ नाम दिया। इसलिए मैंने ApplicationController के अंदर कनेक्शन को बदलने का एक तरीका बनाया:

 def change_database database_id = params[:company_id] return if database_id.blank? configuration = ActiveRecord::Base.connection.instance_eval { @config }.clone configuration[:database] = "database_name_#{database_id}_#{RAILS_ENV}" MultipleDatabaseModel.establish_connection configuration end 

और सभी विधियों के लिए पहले_फिल्टर के रूप में उस विधि को जोड़ा गया:

 before_filter :change_database 

इसलिए प्रत्येक नियंत्रक की प्रत्येक कार्यवाही के लिए, जब परम [: company_id] को परिभाषित और सेट किया जाता है, तो वह डेटाबेस को सही एक में बदल देगा।

माइग्रेशन को संभालने के लिए मैंने ActiveRecord :: माइग्रेशन को विस्तारित किया, एक विधि के साथ जो कि सभी ग्राहकों को दिखता है और प्रत्येक आईडी के साथ एक ब्लॉक को पुनरावृति करता है:

 class ActiveRecord::Migration def self.using_databases *args configuration = ActiveRecord::Base.connection.instance_eval { @config } former_database = configuration[:database] companies = args.blank? ? Company.all : Company.find(args) companies.each do |company| configuration[:database] = "database_name_#{company[:id]}_#{RAILS_ENV}" ActiveRecord::Base.establish_connection configuration yield self end configuration[:database] = former_database ActiveRecord::Base.establish_connection configuration end end 

ध्यान दें कि ऐसा करने से, आप को दो अलग-अलग डेटाबेस से एक ही कार्रवाई में पूछताछ करना असंभव होगा। आप फिर से change_database को कॉल कर सकते हैं, लेकिन जब आप उन तरीकों का उपयोग करने की कोशिश करते हैं जो क्वेरी निष्पादित करते हैं, तब से ये ऑब्जेक्ट सही डेटाबेस से लिंक नहीं किए जाते हैं। इसके अलावा, यह स्पष्ट है कि आप विभिन्न डेटाबेस से संबंधित तालिकाओं में शामिल होने में सक्षम नहीं होंगे।

इसे ठीक से प्रबंधित करने के लिए, सक्रियरेकॉर्ड को काफी बढ़ाया जाना चाहिए। इस समस्या से आपकी सहायता करने के लिए अब तक एक प्लगिन होना चाहिए। एक त्वरित अनुसंधान ने मुझे यह एक दिया:

डीबी-चार्मर: http://kovyrin.github.com/db-charmer/

मैं इसे कोशिश करने के लिए तैयार हूँ मुझे बताएं कि आपके लिए क्या काम है

मैं इसे अन्य डेटाबेस के उपयोग से अपने मॉडल के शीर्ष पर जोड़कर इसे पिछले मिला

 class Customer < ActiveRecord::Base ENV["RAILS_ENV"] == "development" ? host = 'devhost' : host = 'prodhost' self.establish_connection( :adapter => "mysql", :host => "localhost", :username => "myuser", :password => "mypass", :database => "somedatabase" ) 

आपको डीबी चार्मर नामक इस परियोजना को भी देखना चाहिए: http://kovyrin.net/2009/11/03/db-charmer-activerecord-connection-magic-plugin/

DbCharmer ActiveRecord के लिए एक सरल लेकिन शक्तिशाली प्लगइन है जो कुछ चीजें करता है:

  1. आपको एआर मॉडल के कनेक्शन आसानी से प्रबंधित करने की सुविधा देता है ( switch_connection_to विधि)
  2. आपको अलग-अलग सर्वरों / डाटाबेस में एआर मॉडल्स के डिफ़ॉल्ट कनेक्शन स्विच करने की अनुमति देता है
  3. आपको आसानी से यह चुनने की अनुमति देता है कि आपकी क्वेरी कहां जाना चाहिए ( on_* विधियां परिवार)
  4. आपको अपने दासों को स्वचालित रूप से पढ़ने वाले प्रश्न भेजने की अनुमति देता है, जबकि स्वामी सभी अद्यतनों को संभालते हैं
  5. ActiveRecord में एकाधिक डेटाबेस माइग्रेशन जोड़ता है

यह ध्यान देने योग्य है, इन सभी समाधानों में आपको कस्टम डेटाबेस कनेक्शन बंद करने के लिए याद रखना आवश्यक है। आप कनेक्शन से बाहर चलेंगे और अजीब अनुरोध समयबाह्य मुद्दों को अन्यथा देखेंगे।

एक आसान समाधान clear_active_connections है! आपके नियंत्रक में after_filter में

 after_filter :close_custom_db_connection def close_custom_db_connection MyModelWithACustomDBConnection.clear_active_connections! end 

आपके config / database.yml में ऐसा कुछ करें

 default: &default adapter: postgresql encoding: unicode pool: 5 development: <<: *default database: mysite_development test: <<: *default database: mysite_test production: <<: *default host: 10.0.1.55 database: mysite_production username: postgres_user password: <%= ENV['DATABASE_PASSWORD'] %> db2_development: <<: *default database: db2_development db2_test: <<: *default database: db2_test db2_production: <<: *default host: 10.0.1.55 database: db2_production username: postgres_user password: <%= ENV['DATABASE_PASSWORD'] %> 

तो अपने मॉडलों में आप डीबी 2 को संदर्भित कर सकते हैं

 class Customers < ActiveRecord::Base establish_connection "db2_#{Rails.env}".to_sym end