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).