Forgot to mention before. I'm on Rails 2.2.2 and RSpec 1.1.4. Inspired by older discussion touching this issue (see http://www.nabble.com/Database-clearing-td19572270.html) I've now got
Spec::Runner.configure do |config| config.use_transactional_fixtures = false ... tables_to_truncate = ActiveRecord::Base.connection.tables - ["schema_migrations"] config.before(:all) do tables_to_truncate.each do |table_name| ActiveRecord::Base.connection.execute("TRUNCATE TABLE #{table_name};") end end ... end And if I run rake spec all specs pass. But if I run script/spec spec/models/class_foo_spec.rb then it "finds no ghost foos" do ClassFoo.should have(:no).records end fails. That is the first example of describe ClassFoo. Looks like script/spec runs examples (see pastie http://pastie.org/354521) in the order they are defined and rake spec in reverse order. And that of course makes ClassFoo.should have(:no).records fail when run _after_ examples that create ClassFoo instances (befause ive got transactions off and the db state "bleeds" within one describe. 2009-01-07 16:11, Tero Tilus: > I'm keep getting the following kind of pattern in my logs > > ... log from example starts here ... > SQL (0.0ms) BEGIN > SQL (0.0ms) BEGIN > ClassFoo Create (0.2ms) INSERT ... > Group Load (0.4ms) SELECT ... > Contains Create (0.2ms) INSERT ... > ... other stuff from example, no transaction stuff ... > SQL (1.9ms) COMMIT > SQL (0.1ms) ROLLBACK > ... log from example ends here ... If I turn use_transactional_fixtures off, the outer transaction is gone. -- Tero Tilus ## 050 3635 235 ## http://tero.tilus.net/ _______________________________________________ rspec-users mailing list rspec-users@rubyforge.org http://rubyforge.org/mailman/listinfo/rspec-users