Ruby on Rails Haftası #6 | Rails Migration | Emre Çelik
Ruby on Rails Haftası’nda teorik bilgiler sonrası uygulama geliştirmeye devam ediyoruz. Önceki yazımızda Rails MVC yapısında Model katmanını kullanarak veri tabanı hazırlıklarımızı tamamlamış, sınırlandırma ve özellikleri hazırlamıştık. Şimdi de Rails’in Migration özelliğini öğrenip, projemize dahil edeceğiz.
Rails Migration, veritabanı şemasındaki değişiklikleri tanımlamak için Ruby’yi kullanmanıza ve gerçek kodla eşzamanlı çalışmasını sağlamak için bir sürüm kontrol sistemini kullanmanıza olanak tanır.
Bazı kullanım seçeneklerine aşağıda göz atabilirsiniz:
Geliştirici ekibi – Bir kişi bir şema değişikliği yaparsa, diğer geliştiricilerin yalnızca “rake migrate” dosyasını güncellemesi ve çalıştırması yeterli olacaktır.
Production sunucuları – Veritabanını güncel hale getirmek için yeni bir sürümü çıkardığınızda “rake migrate” komutunu çalıştırın.
Birden fazla makine – Bir masaüstünde bir dizüstü bilgisayarda veya birden fazla yerde geliştirirseniz, migration hepsini senkronize etmenize yardımcı olabilir.
Rails Migration ile Neler Yapabiliriz?
Migration özelliği temelde bilinen tüm veri türlerini destekler:
string – başlık gibi küçük veri türleri için..
text – açıklama gibi daha uzun metinli veriler için.
float – ondalık sayılar için.
datetime and timestamp – tarihi ve saati bir sütuna kaydetmek için.
date and time – tarih ve saat bilgisini saklamak için.
binary – resimler, ses veya film gibi verileri depolamak için..
Boolean – doğru veya yanlış değerleri depolamak için.
Geçerli sütun seçenekleri ise şunlardır:
limit (:limit => “50” )
default (:default => “varsayılan deger” )
null (:null => false //NOT NULL olduğunu gösterir.)
NOT: Rails Migration tarafından yapılan aktiviteler, herhangi bir ön uç GUI kullanılarak veya doğrudan SQL isteminde de yapılabilir, ancak Rails Migration tüm bu etkinlikleri çok kolay hale getirir.
Bunlarla ilgili ayrıntılar için Rails API’sına bakmanızı öneririm. *
Migration işlemi oluşturmak için kullanılan genel sözdizimi aşağıdadır:
application> ruby script/generate migration table_name
Bu, db / migrate / 001_table_name.rb dosyasını yaratacaktır. Bir taşıma dosyası, bir veritabanı tablosunun veri yapısını tanımlayan temel Ruby syntaxi içerir.
Üç tablomuza karşılık gelen iki migration oluşturacağız: books ve subjects.
emre> cd library
library> ruby script/generate migration books
library> ruby script/generate migration subjects
Taşıma işlemi sırasında kitap ve konu için çoğul ve küçük harf kullandığınızdan emin olun. Yine bu özellik, bir Migration oluştururken takip etmeniz gereken bir Rails paradigmasıdır.
Uygulamamızın db / migrate alt dizinine gidip, basit bir metin düzenleyicisini kullanarak her dosyayı birer birer düzenleyeceğiz.
“001_books.rb” dosyasını aşağıdaki gibi değiştirin:
ID sütunu otomatik olarak oluşturulacak, bu nedenle buraya yazmayınız.
Burada “self.up” methodu, yeni bir sürüme geçiş yaparken kullanılır; self.down ise gerekirse değişiklikleri geri almak için kullanılır. Şu anda, yukarıdaki senaryo kitaplar tablosu oluşturmak için kullanılacaktır.
002_subjects.rb dosyasını aşağıdaki gibi değiştirin:
Yukarıdaki script, konular tablosu oluşturmak için kullanılacak ve konular tablosunda beş kayıt oluşturacaktır.
Artık gereken tüm migration dosyalarını oluşturduk. Onları veri tabanına karşı çalıştırma zamanı geldi. Bunu yapmak için, komut satırına gidin ve uygulamanın bulunduğu library dizinine gidin ve sonra “rake db:migrate” yazın:
Bu komut eğer daha önce oluşturulmamışsa, veritabanının geçerli sürümünü izleyen bir “schema_info” tablosu oluşturur – her bir yeni migration, yeni bir sürüm olacak ve veritabanınız geçerli sürüme gelene kadar yeni migrationlar gerçekleştirilecektir.
Rake, bir veritabanı yapısını güncelleme gibi karmaşık görevlerin yürütülmesini basitleştirmek için Rails’in yararlandığı Unix make programı ile benzer bir Ruby oluşturma programıdır.
Production ve Test Veri tabanları için Migration Çalıştıralım
Migration işlemini hangi Rails ortamı (veri tabanı) için çalıştıracağınızı belirtmek için “RAILS_ENV” kabuk değişkenini kullanın.
library> export RAILS_ENV=production
library> export RAILS_ENV=test
library> export RAILS_ENV=development
NOT: Windows’da, export komutu yerine “set RAILS_ENV = production” kullanın.
Şimdi, veritabanımız ve gerekli tablolarımız var. Sonraki iki bölümde, Controller (ActionController) ve View (ActionView) adlı bileşenleri inceleyeceğiz.
Bugünün en özel komutu belki de hiç unutmayacağınız komutlardan birisidir “rake db:migrate” sıkılıkla kullandığımız bir komuttur geliştirme esnasında. Yarının yazısı ise bu makaleden daha daha heyecanlı olacak, mutlaka bugünkü ayarlamaları (mümkünse daha fazlasını) yaptığınızdan emin olun. 🙂
Controller ve View katmanlarını hazırlamaya çalışacağız, bu yazı ve önceki yazılar hakkında yorumlarınız bekliyorum. Paylaşarak daha çok kişiye ulaşmamızı sağlayabilirsiniz. Burada olduğunuz için teşekkürler, iyi çalışmalar. 🙂
Migrations in Rails
Önceki Yazı Ruby on Rails Haftası #5 | MVC-Model Katmanı
Sonraki Yazı Ruby on Rails Haftası #7 | MVC – Controller
Ruby on Rails Haftası #7 | Emre Çelik
[…] Ruby on Rails Haftası #6 […]