benim gözlük kırmak database_cleaner yapar . Veri tabanı, kesme stratejisi kullanılarak database_cleaner kullanılarak her bir testten sonra temizlenir.yükseltiliyor Kapibara ben Kapibara sürümünü 1.0.1 kullanıyorum ve selenyum sürücüsünü kullanarak çalışan yazılı istek özellikleri bir yeri vardır sürümü 3.2.11 yükseltilmiş eski raylar uygulama var
Ben poltergeist en son sürümünü kullanmak mümkün 1.1.4'e 1.0.1 den hortlak yerine selenyum ve yükseltilmiş Kapibara kullanmak istiyorum. Sadece capybara gem (ve onun bağımlılıkları) değiştirerek benim specs çalıştıran sorunlar tanıttı.
Ben tutarlı bir şekilde her spec sonra temizlik işleyicisi benim Postgresql veritabanından hataları kilitlenmeye olsun. Benim spec_helper oldukça basit ve şöyle görünür: Ben olsun
RSpec.configure do |config|
config.mock_with :rspec
config.use_transactional_fixtures = false
config.before(:suite) do
DatabaseCleaner.strategy = :truncation
DatabaseCleaner.clean_with(:truncation)
end
config.before(:each) do
DatabaseCleaner.start
end
config.after(:each) do
DatabaseCleaner.clean
end
end
hata şu şekildedir:
An error occurred in an after hook
ActiveRecord::StatementInvalid: PG::Error: ERROR: deadlock detected
DETAIL: Process 41747 waits for AccessExclusiveLock on relation 17612 of database 16396; blocked by process 41752.
Process 41752 waits for RowExclusiveLock on relation 17529 of database 16396; blocked by process 41747.
HINT: See server log for query details.
: ALTER TABLE "aaa" ENABLE TRIGGER ALL;ALTER TABLE "bbbb" ENABLE TRIGGER ALL;ALTER TABLE "ccc" ENABLE TRIGGER ALL;
occurred at /xxx/.bundle/gems/activerecord-3.2.11/lib/active_record/connection_adapters/postgresql_adapter.rb:652:in `async_exec'
Ben IMO test verilerini ama aksi özel bir şey oluşturmak için FactoryGirl kullanın.
Ben database_cleaner tarafından oluşturulan çıkmazdan diğer ucunu tutan anlamaya edemedik. Bunu anlamak için herhangi bir fikir en çok hoş geldiniz.
Herkes değişti ve bu sorunları neden olmaya başladı olabileceği Kapibara 1.0.1, 1.1.4 arasındaki herhangi bir değişiklik biliyor?
tam tersi. Testlerim arasında aralıklı olarak 1.1.2'den 1.1.1'e kadar kapybara'ya geçiş yapana kadar deadlock'ler vardı. Üzgünüm, yorumum daha yararlı değil. =/ –
Peki ben deadlock sorunları yaşayan tek kişi değilim çünkü sevindim :-) Ben sadece aynı anda iki iş parçacığı aynı anda tablolara erişiyor neden göremiyorum. DatabaseClean sadece gerçek testler tamamlandıktan sonra çalışmalıdır ... – HakonB
Ayrıca, bu aptalca bir soru olabilir, ancak DatabaseCleaner geminizi güncellemeyi denediniz mi? Ayrıca, FWIW Bence hatalar sadece biz gecikmiş_job kullanmaya başladıktan sonra ortaya çıkmaya başladı (testler için kapatmış olsak da). –