Rake db: test: hazırlık aslında ne işe yarar?


124

Rayların eğitim videolarını takip ediyorum ve db:test:preparekomutun gerçekte ne yaptığını anlayamıyorum. Birisi bir açıklama sağlayabilir mi?

Yanıtlar:


119

Rake db: migrate, geliştirme ortamında bekleyen geçişleri çalıştırır ve db / schema.rb'yi günceller. Rake db: test: load, test veritabanını geçerli db / schema.rb'den yeniden oluşturur. Sonraki denemelerde, önce bekleyen geçişleri kontrol edip sizi uygun şekilde uyardığından ilk olarak db: test: Prepar'ı çalıştırmak iyi bir fikirdir.

- http://guides.rubyonrails.org/testing.html

Temel olarak, veritabanını klonlamayı yönetir, böylece test veritabanını güncellemek için geçişleri teste göre çalıştırmanız gerekmez.


19
rake db:test:prepareartık kullanımdan kaldırıldı.
Jngai1297

3
yukarıdaki url öldü, bu yenisi olacaktır github.com/rails/rails/blob/4-1-stable/activerecord/…
riffraff


4
@ Jngai1297 Artık değil!
Phillipp

1
@Phillipp bir kez daha kılavuzlar.rubyonrails.org/v5.0/…
yozzz

42

Özellikle rake db:test:prepareşunları yapacaktır:

  • Bekleyen taşıma işlemlerini kontrol edin ve
  • test şemasını yükle

Yani, db/schema.rbprojenizde mevcut olan ve çalıştırılmamış herhangi bir geçiş olup olmadığını belirlemek için dosyanıza bakacaktır . Bekleyen geçiş olmadığını varsayarsak, veritabanını boşaltır ve db/schema.rbdosyanın içeriğine göre yeniden yükler.


2

tırmık db: Test: hazırlamak gibi PG sorunlar için iyi bir çözümdür bu .

"PG :: TanımsızTable: HATA: ilişki mevcut değil" doğru bir Rails adlandırma ve kuralı ile "sadece yürütemediğim" rake db:migrate RAILS_ENV=production

Örneğin, burada tartışılan bir hata için test veritabanı oluşturamadığınızda : "PG tanımlanamayan hata ilişkisi kullanıcılar mevcut değil"

Bu hatayla ilgili her şey "PG :: UndefinedTable: ERROR: xxxxx ilişkisi mevcut değil"

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.