रूबी ऑन रेल्स 2.1 - माइग्रेशन

रेल माइग्रेशन रूबी का उपयोग आपके डेटाबेस स्कीमा में परिवर्तन को परिभाषित करने के लिए करता है, जिससे वास्तविक कोड के साथ चीजों को सिंक्रनाइज़ रखने के लिए एक संस्करण नियंत्रण प्रणाली का उपयोग करना संभव हो जाता है।

इसके कई उपयोग हैं, जैसे -

  • डेवलपर्स की टीमें - यदि कोई व्यक्ति स्कीमा परिवर्तन करता है, तो अन्य डेवलपर्स को बस "रेक माइग्रेट" को अपडेट करने और चलाने की आवश्यकता होती है।

  • उत्पादन सर्वर - "रेक माइग्रेट" चलाते हैं जब आप डेटाबेस को डेट पर लाने के लिए एक नया रिलीज़ रोल करते हैं।

  • एकाधिक मशीनें - यदि आप एक डेस्कटॉप और एक लैपटॉप, या एक से अधिक स्थानों पर विकसित करते हैं, तो माइग्रेशन आपको उन सभी को सिंक्रनाइज़ रखने में मदद कर सकता है।

रेल प्रवासन क्या कर सकता है?

  • create_table (नाम, विकल्प)

  • drop_table(name)

  • rename_table (old_name, new_name)

  • add_column (table_name, column_name, प्रकार, विकल्प)

  • rename_column (table_name, column_name, new_column_name)

  • change_column (table_name, column_name, प्रकार, विकल्प)

  • remove_column (table_name, column_name)

  • add_index (table_name, column_name, index_type)

  • remove_index (table_name, column_name)

Migrations support all the basic data types - स्ट्रिंग, टेक्स्ट, पूर्णांक, फ्लोट, दिनांक-समय, टाइमस्टैम्प, समय, दिनांक, बाइनरी और बूलियन -

  • string - एक टाइटल जैसे छोटे डेटा प्रकारों के लिए है।

  • text - विवरण के रूप में पाठ डेटा के लंबे टुकड़ों के लिए है।

  • text - विवरण के रूप में पाठ डेटा के लंबे टुकड़ों के लिए है।

  • integer - पूरी संख्या के लिए है।

  • float - दशमलव के लिए है।

  • date-time and timestamp - एक कॉलम में दिनांक और समय संग्रहीत करता है।

  • date and time - या तो केवल तारीख या समय ही स्टोर करता है।

  • binary - डेटा, जैसे कि चित्र, ऑडियो, या फिल्में संग्रहीत करने के लिए है।

  • boolean - सही या गलत मूल्यों को संग्रहीत करने के लिए है।

मान्य कॉलम विकल्प हैं -

  • limit (: सीमा => "50")

  • default ((डिफ़ॉल्ट => "ब्ला")

  • null((null => false का तात्पर्य है NULL नहीं )

NOTE - रेल माइग्रेशन द्वारा की गई गतिविधियाँ किसी भी फ्रंट-एंड GUI या SQL प्रॉम्प्ट पर डायरेक्ट का उपयोग करके की जा सकती हैं, लेकिन रेल माइग्रेशन उन सभी गतिविधियों को बहुत आसान बना देता है

इन पर विवरण के लिए रेल एपीआई देखें ।

माइग्रेशन बनाएँ

माइग्रेशन बनाने के लिए यहाँ जेनेरिक सिंटैक्स दिया गया है -

C:\ruby\application> ruby script/generate migration table_name

यह फ़ाइल db / migrate / 001_table_name.rb बनाएगा। एक माइग्रेशन फ़ाइल में मूल रूबी सिंटैक्स होता है जो डेटाबेस तालिका की डेटा संरचना का वर्णन करता है।

NOTE - माइग्रेशन जनरेटर चलाने से पहले, मॉडल जनरेटर द्वारा उत्पन्न मौजूदा माइग्रेशन को साफ करने की सिफारिश की जाती है।

हम अपनी तीन तालिकाओं के अनुरूप दो माइग्रेशन बनाएंगे - books and subjects.

C:\ruby> cd library
C:\ruby\library> ruby script/generate migration books
C:\ruby\library> ruby script/generate migration subjects

ध्यान दें कि आप पुस्तक और विषय के लिए लोअरकेस का उपयोग कर रहे हैं और माइग्रेशन बनाते समय बहुवचन रूप का उपयोग कर रहे हैं। यह एक रेल प्रतिमान है जिसे आपको माइग्रेशन बनाते समय हर बार पालन करना चाहिए। -

यह क्या करना है यह बताने के लिए कोड को संपादित करें

अपने आवेदन के db / माइग्रेट करें और किसी भी सरल पाठ संपादक का उपयोग करके एक-एक करके प्रत्येक फ़ाइल को संपादित करें।

निम्नानुसार 001_books.rb संशोधित करें -

आईडी कॉलम अपने आप बन जाएगा, इसलिए इसे यहां भी न करें।

class Books < ActiveRecord::Migration
   def self.up
      create_table :books do |t|
         t.string     :title, :limit => 32, :null => false
         t.float      :price
         t.integer    :subject_id
         t.text       :description
         t.timestamp  :created_at
      end
   end
   def self.down
      drop_table :books
   end
end

प्रक्रिया self.up नए संस्करण में माइग्रेट करते समय उपयोग किया जाता है, self.downयदि आवश्यक हो तो किसी भी परिवर्तन को वापस करने के लिए उपयोग किया जाता है। इस समय, उपरोक्त स्क्रिप्ट का उपयोग करने के लिए किया जाएगाbooks तालिका।

निम्नानुसार 002_subjects.rb संशोधित करें -

class Subjects < ActiveRecord::Migration
   def self.up
      create_table :subjects do |t|
         t.string :name
      end
      Subject.create :name => "Physics"
      Subject.create :name =>"Mathematics"
      Subject.create :name => "Chemistry"
      Subject.create :name => "Psychology"
      Subject.create :name => "Geography"
   end
   def self.down
      drop_table :subjects
   end
end

उपरोक्त स्क्रिप्ट बनाने के लिए उपयोग किया जाएगा subjectsतालिका; यह विषय तालिका में पांच रिकॉर्ड बनाएगा।

माइग्रेशन चलाएं

अब जब आपने सभी आवश्यक माइग्रेशन फ़ाइलों को बनाया है, तो डेटाबेस के खिलाफ उन्हें निष्पादित करने का समय आ गया है। ऐसा करने के लिए, कमांड प्रॉम्प्ट पर जाएं और लाइब्रेरी डायरेक्टरी खोलें जिसमें एप्लिकेशन स्थित है, और फिर टाइप करेंrake migrate निम्नानुसार है -

C:\ruby\library> rake db:migrate

यदि यह मौजूद नहीं है, तो यह "स्कीमा_इनफो" तालिका बनाएगा, जो डेटाबेस के वर्तमान संस्करण को ट्रैक करता है। प्रत्येक नया माइग्रेशन एक नया संस्करण होगा, और कोई भी नया माइग्रेशन तब तक चलाया जाएगा, जब तक कि आपका डेटाबेस वर्तमान संस्करण पर नहीं है।

रेक, यूनिक्स मेक प्रोग्राम के समान एक रूबी बिल्ड प्रोग्राम है जिसका उपयोग रेल का उपयोग करता है, जटिल कार्यों के निष्पादन को आसान बनाने के लिए जैसे डेटाबेस की संरचना को अपडेट करना आदि।

उत्पादन और परीक्षण डेटाबेस के लिए माइग्रेशन चलाना

यदि आप यह निर्दिष्ट करना चाहते हैं कि माइग्रेशन के लिए पर्यावरण का उपयोग करने के लिए कौन-सी रेल का उपयोग करें, तो RIDS_ENV शेल चर का उपयोग करें।

उदाहरण के लिए -

C:\ruby\library> set RAILS_ENV=production
C:\ruby\library> rake db:migrate
C:\ruby\library> set RAILS_ENV=test
C:\ruby\library> rake db:migrate
C:\ruby\library> set RAILS_ENV=development
C:\ruby\library> rake db:migrate

NOTE- यूनिक्स पर, सेट कमांड के बजाय "एक्सपोर्ट्स R नाखून_ENV = प्रोडक्शन" का उपयोग करें ।

आगे क्या है?

अब हमारे पास हमारा डेटाबेस और आवश्यक टेबल उपलब्ध हैं। बाद के दो अध्यायों में, हम नियंत्रक (एक्शनकंट्रोलर) और व्यू (एक्शन व्यू) नामक दो महत्वपूर्ण घटकों का पता लगाएंगे।

  • नियंत्रक बनाना (एक्शन कंट्रोलर)
  • दृश्य बनाना (एक्शन दृश्य)