Ruby on Rails - Geçişler
Rails Migration, veritabanı şemanızdaki değişiklikleri tanımlamak için Ruby'yi kullanmanıza izin vererek, işleri gerçek kodla senkronize tutmak için bir sürüm kontrol sistemi kullanmayı mümkün kılar.
Bunun birçok kullanımı vardır -
Teams of developers - Bir kişi şema değişikliği yaparsa, diğer geliştiricilerin sadece güncellemesi ve "rake migrate" i çalıştırması gerekir.
Production servers - Veritabanını da güncellemek için yeni bir sürüm yayınladığınızda "rake migrate" i çalıştırın.
Multiple machines - Hem masaüstü hem de dizüstü bilgisayarda veya birden fazla konumda geliştirme yapıyorsanız, geçişler bunların tümünü senkronize tutmanıza yardımcı olabilir.
Rails Migration Ne Yapabilir?
- create_table (ad, seçenekler)
- drop_table(name)
- rename_table (eski_ad, yeni_ad)
- add_column (tablo_adı, sütun_adı, tür, seçenekler)
- rename_column (tablo_adı, sütun_adı, yeni_sütun_adı)
- change_column (tablo_adı, sütun_adı, tür, seçenekler)
- remove_column (tablo_adı, sütun_adı)
- add_index (tablo_adı, sütun_adı, dizin_türü)
- remove_index (tablo_adı, sütun_adı)
Migrations support all the basic data types - Aşağıda, geçişin desteklediği veri türlerinin listesi verilmiştir -
string - başlık gibi küçük veri türleri için.
text - açıklama gibi daha uzun metinsel veri parçaları için.
integer - tam sayılar için.
float - ondalık sayılar için.
datetime and timestamp - tarih ve saati bir sütuna kaydedin.
date and time - yalnızca tarihi veya yalnızca saati kaydedin.
binary - görüntü, ses veya film gibi verileri depolamak için.
Boolean - doğru veya yanlış değerleri depolamak için.
Valid column options are - Aşağıda geçerli sütun seçeneklerinin listesi verilmiştir.
limit (: limit => "50")
default (: varsayılan => "blah")
null(: null => false NULL DEĞİL anlamına gelir )
NOTE - Rails Migration tarafından gerçekleştirilen etkinlikler herhangi bir ön uç GUI kullanılarak veya doğrudan SQL komut isteminde yapılabilir, ancak Rails Migration tüm bu etkinlikleri çok kolaylaştırır.
Bunlarla ilgili ayrıntılar için Rails API'ye bakın .
Göçleri Oluşturun
İşte bir geçiş oluşturmak için genel sözdizimi -
application_dir> rails generate migration table_name
Bu, db / migrate / 001_table_name.rb dosyasını oluşturacaktır. Bir geçiş dosyası, bir veritabanı tablosunun veri yapısını tanımlayan temel Ruby sözdizimini içerir.
NOTE - Geçiş oluşturucuyu çalıştırmadan önce, model oluşturucular tarafından oluşturulan mevcut geçişleri temizlemeniz önerilir.
Üç tablomuza karşılık gelen iki geçiş oluşturacağız - books and subjects.
Kitapların taşınması aşağıdaki gibi olmalıdır -
tp> cd library
library> rails generate migration books
Yukarıdaki komut aşağıdaki kodu üretir.
konu göçü aşağıdaki gibi olmalıdır -
tp> cd library
library> rails generate migration subjects
Yukarıdaki komut aşağıdaki kodu üretir.
Geçiş oluştururken kitap ve konu için küçük harf ve çoğul biçim kullandığınıza dikkat edin. Bu, her Geçiş oluşturduğunuzda izlemeniz gereken bir Rails paradigmasıdır.
Kodu Düzenleyin
Uygulamanızın db / migrate alt dizinine gidin ve herhangi bir basit metin düzenleyiciyi kullanarak her dosyayı tek tek düzenleyin.
001_books.rb'yi aşağıdaki gibi değiştirin -
Kimlik sütunu otomatik olarak oluşturulacağından burada da yapmayın.
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
Yöntem self.up yeni bir sürüme geçerken kullanılır, self.downgerekirse herhangi bir değişikliği geri almak için kullanılır. Şu anda, yukarıdaki komut dosyası oluşturmak için kullanılacakbooks tablo.
002_subjects.rb'yi aşağıdaki gibi değiştirin -
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
Yukarıdaki komut dosyası oluşturmak için kullanılacak subjects tablo ve konular tablosunda beş kayıt oluşturacaktır.
Geçişi Çalıştırın
Artık gerekli tüm geçiş dosyalarını oluşturdunuz. Bunları veritabanına karşı yürütmenin zamanı geldi. Bunu yapmak için bir komut istemine gidin ve uygulamanın bulunduğu kitaplık dizinine gidin ve ardından şunu yazın:rake migrate aşağıdaki gibi -
library> rake db:migrate
Bu, mevcut değilse, veritabanının geçerli sürümünü izleyen bir "schema_info" tablosu oluşturur - her yeni geçiş yeni bir sürüm olacak ve tüm yeni geçişler, veritabanınız mevcut sürüme gelene kadar çalıştırılacaktır.
RakeUnix benzeri bir Ruby inşa programıdır yapmak programında Raylar vb bir veritabanının yapısını güncelleme gibi karmaşık görevlerin yürütülmesini kolaylaştırmak için, yararlanır olduğunu
Üretim ve Test Veritabanları için Geçiş Çalıştırma
Taşıma için hangi Rails ortamının kullanılacağını belirtmek isterseniz, RAILS_ENV kabuk değişkenini kullanın.
Örneğin -
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- Windows'ta dışa aktar komutu yerine "set RAILS_ENV = production" seçeneğini kullanın .
Sırada ne var?
Artık veri tabanımız ve gerekli tablolar mevcut. Sonraki iki bölümde Controller (ActionController) ve View (ActionView) adlı iki önemli bileşeni inceleyeceğiz.
- Denetleyiciler Oluşturma (Eylem Denetleyicisi).
- Görünüm Oluşturma (Eylem Görünümü).