2011-06-08 31 views
6

seçeneği hariç Bir raylı sistem projesinde veritabanı temizleyicisiyle ilgili bir sorun yaşıyorum. Sınama ortamında bir sqlite3 veritabanı kullanıyorum ve db: test: d: d: d: d: d: d: d: d: d: d: d: d: d: d: d: d: d: d: d: d: d: d: d: d: d: d: d: d: d: d: d: d: d: d: d: d: d: d: D0: D0:.Veritabanı temizleyici, kullanırken bile tüm tabloları temizler:

Webdriver sürücüsünü kullanarak javascript ile etiketlenmiş bazı salatalık senaryolarım var.

Benim env.rb dosyasında

, ben dışında seçeneği ile, kesme stratejisi kullanmak için veritabanı temizleyici yapılandırmış: beklendiği gibi

DatabaseCleaner.strategy = :truncation, {:except => %w[ignore me]} 

DatabaseCleaner.clean Her bir senaryo sonra denir ve işleri-javascript etiketli senaryoları. Bununla birlikte, javascript dışı senaryolarda, dizinin tamamı hariç, aşağıdaki tabloda listelenen tablolar da dahil olmak üzere, tüm veritabanını kesmektedir. Ayrıca, çalışmayan DatabaseCleaner.clean_with numaralı telefonu aramayı da denedim.

+0

beklendiği gibi ve onu orada çalışıyor? –

+0

Her iki yönde de doğru ve yanlış, aynı sorunu ayarlama çalıştı. Bu kesinlikle veritabanı temizleyici ile ilgili görünüyor; Ben fikstür veri tam olarak bu noktada sildi onaylamak için çağrıyı DatabaseCleaner.clean tarafındaki hata ayıklama ifadeleri koymak. – AlistairH

cevap

7

Benzer bir hatayla karşılaşıyordum, ancak bu durumda benim javascript senaryolarım çalışırken sorunu görmekteydim. Ben (salatalık-raylar 0.4.0/lib/salatalık/raylar/kanca/database_cleaner orada belirtilen database_cleaner kanca dosyasında baktım

this post genelinde

çok googling, okuma ve saç çekme sonra geldi. rb) ve bununla birlikte veritabanı_cleaner stratejisini şu şekilde ayarlar: her bir senaryodan önce istisnalar olmaksızın aşağıdaki etiketler: @ no-txn, @ selenium, @ culerity, @ celerity, @ javascript.

Before('@no-txn,@selenium,@culerity,@celerity,@javascript') do 
    DatabaseCleaner.strategy = :truncation 
end 

Ben kopyalanan ve benim salatalık env.rb dosyasına önce açıklama yapıştırılan ve gözlerimi ekledi: buna açıklamada hariç. Bu sorunu çözmüş görünüyor.

Soruna neden olan javascript senaryolarınız olmadığından emin misiniz?

+0

Kesinlikle sorun olan javascript senaryoları değil. Bununla birlikte, veritabanı temizleyici stratejimi geçersiz kılacak bir şey olması gerektiğinden şüpheleniyorum.Her senaryodan önce açıkça önceki bloğa yerleştirmeyi deneyeceğim. – AlistairH

+0

Daha fazla araştırma yaptım. Aslında javascript etiketli senaryolarımı başka bir ortamın altında çalıştırıyorum, bu da senaryoyu neden görmediğimi açıklıyor. Bu sorun hala 0.4.1 altında da var, ancak söylediklerini yaptım ve stratejiyi önceki blokta belirledim. Teşekkürler. – AlistairH

8

Ben PostgreSQL ve database_cleaner (1.4.0) ile benzer bir sorun yaşadım. Bu kod tüm rağmen çalışma ve kesik değildi: dışında seçeneği:

DatabaseCleaner.clean_with(:truncation, :except => %w[countries]) 

öğrendim bunu PostgreSQL ile çalışması için tam tablo adını sağlamak zorunda.

DatabaseCleaner.clean_with(:truncation, :except => %w[public.countries]) 

GÜNCELLEME: Aşağıdaki kodu beklendiği gibi çalıştı böyle görünüyordatabase_cleaner sürümü düzeltilmiştir 1.4.1 Eğer işlem armatürleri kullanıyor musunuz

+0

, başka bir şekilde çalışıyorsa da, DatabaseCleaner.clean_with (: truncation,: only =>% w [countries]) "muhtemelen belirgin ama bahsetmeye değer – Richlewis

İlgili konular