Ruby on Rails - Migrasi

Rails Migration memungkinkan Anda menggunakan Ruby untuk menentukan perubahan pada skema database Anda, sehingga memungkinkan untuk menggunakan sistem kontrol versi untuk menjaga sinkronisasi dengan kode yang sebenarnya.

Ini memiliki banyak kegunaan, termasuk -

  • Teams of developers - Jika satu orang membuat perubahan skema, pengembang lain hanya perlu memperbarui, dan menjalankan "rake migrate".

  • Production servers - Jalankan "rake migrate" saat Anda meluncurkan rilis baru untuk memperbarui database.

  • Multiple machines - Jika Anda mengembangkan di desktop dan laptop, atau di lebih dari satu lokasi, migrasi dapat membantu Anda menyinkronkan semuanya.

Apa yang Dapat Dilakukan Rails Migration?

  • create_table (nama, opsi)
  • drop_table(name)
  • rename_table (nama_lama, nama_baru)
  • add_column (nama_tabel, nama_kolom, jenis, opsi)
  • ganti nama_kolom (nama_tabel, nama_kolom, nama_kolom baru)
  • change_column (table_name, column_name, type, options)
  • hapus_kolom (nama_tabel, nama_kolom)
  • add_index (nama_tabel, nama_kolom, jenis_indeks)
  • remove_index (nama_tabel, nama_kolom)

Migrations support all the basic data types - Berikut ini adalah daftar tipe data yang didukung migrasi -

  • string - untuk tipe data kecil seperti judul.

  • text - untuk potongan data tekstual yang lebih panjang, seperti deskripsi.

  • integer - untuk bilangan bulat.

  • float - untuk desimal.

  • datetime and timestamp - simpan tanggal dan waktu ke dalam kolom.

  • date and time - simpan hanya tanggal atau waktu saja.

  • binary - untuk menyimpan data seperti gambar, audio, atau film.

  • Boolean - untuk menyimpan nilai benar atau salah.

Valid column options are - Berikut ini adalah daftar opsi kolom yang valid.

  • limit (: limit => "50")

  • default (: default => “bla”)

  • null(: null => false berarti NOT NULL )

NOTE - Aktivitas yang dilakukan oleh Rails Migration dapat dilakukan menggunakan GUI front-end apa pun atau langsung pada prompt SQL, tetapi Rails Migration membuat semua aktivitas tersebut menjadi sangat mudah.

Lihat Rails API untuk detailnya.

Buat Migrasi

Berikut adalah sintaks umum untuk membuat migrasi -

application_dir> rails generate migration table_name

Ini akan membuat file db / migrate / 001_table_name.rb. File migrasi berisi sintaks Ruby dasar yang menggambarkan struktur data tabel database.

NOTE - Sebelum menjalankan generator migrasi, disarankan untuk membersihkan migrasi yang ada yang dihasilkan oleh generator model.

Kami akan membuat dua migrasi sesuai dengan tiga tabel kami - books and subjects.

Migrasi buku harus sebagai berikut -

tp> cd library
library> rails generate migration books

Perintah di atas menghasilkan kode berikut.

migrasi subjek harus sebagai berikut -

tp> cd library
library> rails generate migration subjects

Perintah di atas menghasilkan kode berikut.

Perhatikan bahwa Anda menggunakan huruf kecil untuk buku dan subjek dan bentuk jamak saat membuat migrasi. Ini adalah paradigma Rails yang harus Anda ikuti setiap kali Anda membuat Migrasi.

Edit Kode

Pergi ke db / migrate subdirektori aplikasi Anda dan edit setiap file satu per satu menggunakan editor teks sederhana.

Ubah 001_books.rb sebagai berikut -

Kolom ID akan dibuat secara otomatis, jadi jangan lakukan di sini juga.

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

   def self.down
      drop_table :books
   end
end

Metode self.up digunakan saat bermigrasi ke versi baru, self.downdigunakan untuk mengembalikan semua perubahan jika diperlukan. Saat ini, skrip di atas akan digunakan untuk membuatbooks meja.

Ubah 002_subjects.rb sebagai berikut -

class Subjects < ActiveRecord::Migration
   def self.up
      
      create_table :subjects do |t|
         t.column :name, :string
      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

Skrip di atas akan digunakan untuk membuat subjects tabel dan akan membuat lima catatan di tabel subjek.

Jalankan Migrasi

Sekarang Anda telah membuat semua file migrasi yang diperlukan. Saatnya untuk mengeksekusinya terhadap database. Untuk melakukan ini, buka prompt perintah dan masuk ke direktori perpustakaan tempat aplikasi berada, lalu ketikrake migrate sebagai berikut -

library> rake db:migrate

Ini akan membuat tabel "schema_info" jika tidak ada, yang melacak versi database saat ini - setiap migrasi baru akan menjadi versi baru, dan setiap migrasi baru akan dijalankan hingga database Anda pada versi saat ini.

Rakeadalah program build Ruby yang mirip dengan Unix make program yang dimanfaatkan oleh Rails, untuk menyederhanakan pelaksanaan tugas-tugas kompleks seperti memperbarui struktur database, dll.

Menjalankan Migrasi untuk Produksi dan Menguji Database

Jika Anda ingin menentukan lingkungan Rails yang akan digunakan untuk migrasi, gunakan variabel shell RAILS_ENV.

Misalnya -

library> export RAILS_ENV = production
library> rake db:migrate
library> export RAILS_ENV = test
library> rake db:migrate
library> export RAILS_ENV = development
library> rake db:migrate

NOTE- Di Windows, gunakan "set RAILS_ENV = production" alih-alih perintah ekspor .

Apa selanjutnya?

Sekarang kami memiliki database kami dan tabel yang diperlukan tersedia. Dalam dua bab berikutnya, kita akan menjelajahi dua komponen penting yang disebut Controller (ActionController) dan View (ActionView).

  • Membuat Pengontrol (Pengontrol Tindakan).
  • Membuat Tampilan (Tampilan Tindakan).