Veritabanı işi Rails da daha önceden SQL den gelenler için biraz şaşırtıcı olabilir. Bana ilk kullandığımda öyle gelmişti, aslında şimdi düşününce veritabanı üstüne script çalıştırmaktan bir farkı yok migrate yapmanın ama hepsini tek bir yerde, site kodlarını yazdığımız yerde yapıp terminalden bak değişikliklerim bunlar deme süreci sanırım biraz farklıydı. Çünkü Rails da tam olarak yaptığınız bu, bir veritabanı oluşturduktan ve içini doldurduktan sonra, tablolarda bir değişiklik yapmanız gerktiği zaman, genel düzeni fazla bozmaycak şekilde bir migration (yer değiştime yapısı) oluşturup sonra onu Ruby abi, kabul edersen şöyle bi güncellememiz var filan diyorsunuz.
Belki süreç dahilinde bir şeyler ters gitti ve içerikler yeni ayarlanıza hiç uymuyor. Bu biraz sıkıntılı bir durum olsa da test sırasında sıklıkla olabilecek bir şey (: içerik istediğiniz tablo kolon yapısına uymuyor ve tüm içeriği silip, yaptığınız migration lara göre yeni veritabanı oluşturmak istiyorsunuz. Yapabileceğiniz şey şu:
rake db:drop db:create db:migrate db:seed
Bu veritabanını siler, yeni bir tane oluşturur ve tüm migration (yer değiştirme yapısı) ları uygular. Ancak migration ları tek tek uygulamadan, veritabanını "schema.rb" dosyasında gözüktüğü gibi tekrar oluşturmak istiyorsanız alttaki iki satır da ayrı ayru bunu yapabilir:
rake db:schema:load
rake db:reset
Unutmayın veritabanı silme işlemleri sırasında ona bağlı aktif bir bağlantı olmaması gerekiyor. Veritabanı üzerinde yapabileceğiniz işlemleri çoğu şunlar, buradaki "ortam" diye bahsettiğim şey terminal üzerinde çalışırken muhtemelen kullandığınız env adında olan ortamdır:
- db:create - Yeni veritabanı oluşturur, sadece o anki ortam için.
- db:create:all - Yeni veritabanı oluşturur, tüm ortamlar için.
- db:drop - Veritabanı kaldırır, sadece o anki ortam için.
- db:drop:all - Veritabanı kaldırır, tüm ortamlar için.
- db:migrate - Çalıştırılmamış migration ları çalıştırır, sadece o anki ortam için.
- db:migrate:up - Tek bir migration ı çalıştırır.
- db:migrate:down - Bir migration geri gider.
- db:migrate:status - O anki migration durumunu gösterir.
- db:rollback - Son migrationa geri gider.
- db:forward - O anki şema versiyonunundan sonrakine gider.
- db:seed - db/seed.rb dosyasını çalıştırır, yemleme.
- db:schema:load - Güncel şemayı veritabanına uygular, sadece o anki ortam için.
- db:schema:dump - Güncel şemayı boşaltır.
- db:setup - db:schema:load ve db:seed işlemlerini yapar.
- db:reset - db:drop ve db:setup işlemlerini yapar.
- db:migrate:redo - db:migrate:down ve db:migrate:up ya da db:rollback ve db:migrate işlemlerini yapar.
- db:migrate:reset - db:drop db:create ve db:migrate işlemlerini yapar.