İçeriğe geç

Ruby on Rails Haftası #6 | Rails Migration

Tahmini Okuma Süresi: 6 dakika

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.

Ruby on Rails Haftası #5 | MVC-Model Katmanı

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?

  • create_table(name, options)
  • drop_table(name)
  • rename_table(old_name, new_name)
  • add_column(table_name, column_name, type, options)
  • rename_column(table_name, column_name, new_column_name)
  • change_column(table_name, column_name, type, options)
  • remove_column(table_name, column_name)
  • add_index(table_name, column_name, index_type)
  • remove_index(table_name, column_name)

 

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.
  • integer – tam sayılar 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 Oluşturmak

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.

Kodları Düzenleyelim

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.

Migration Çalıştıralım

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:

library> rake db:migrate

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.

Ö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

NOT: Windows’da, export komutu yerine “set RAILS_ENV = production” kullanın.

Sırada Ne Var?

Ş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. 🙂

Kaynaklar

Ruby on Rails API

https://www.tutorialspoint.com/ruby-on-rails/

Migrations in Rails

3 Yorum

  1. Sedat Sedat

    Ruby programlamaya yeni başladım.
    C# da olduğu gibi Veritabanına veri ekleme/silme/güncelleme kodunda yardımcı olabilir misiniz?

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir