database_cleaner-sequel icon indicating copy to clipboard operation
database_cleaner-sequel copied to clipboard

DBs not cleaned when using multiple DBs after upgrade to 2.x.x from 1.8.0

Open PetrKaleta opened this issue 3 years ago • 4 comments

For some reason database_cleaner-sequel stopped working after migrating to v 2.0.0. ENV: ruby 3.1.2, sequel 5.58.0, minitest 5.16.2

Working configuration for 1.8.0 was:

    before :each do
      DatabaseCleaner[:sequel, connection: DEFAULT_DB].start
      DatabaseCleaner[:sequel, connection: SHARED_DB].start
    end

    after :each do
      DatabaseCleaner[:sequel, connection: DEFAULT_DB].clean
      DatabaseCleaner[:sequel, connection: SHARED_DB].clean
    end

Current configuration for 2.0.0 is:

    before :each do
      DatabaseCleaner[:sequel, db: DEFAULT_DB].start
      DatabaseCleaner[:sequel, db: SHARED_DB].start
    end

    after :each do
      DatabaseCleaner[:sequel, db: DEFAULT_DB].clean
      DatabaseCleaner[:sequel, db: SHARED_DB].clean
    end

Just to be clear, it's not raising any error, but basically databases are not cleaned at all...

PetrKaleta avatar Apr 08 '21 10:04 PetrKaleta

Same here, stopped working. Pasting trace:

line 20 of test_helper.rb is this:

DatabaseCleaner.clean_with :truncation

10: from /run/media/megatux/6967f1a1-b777-4681-b35f-261f322cd933/code/newsan/newsan_tv_r1/test/test_helper.rb:20:in `<top (required)>'
	 9: from /home/megatux/.asdf/installs/ruby/2.7.4/lib/ruby/2.7.0/forwardable.rb:235:in `clean_with'
	 8: from /home/megatux/.asdf/installs/ruby/2.7.4/lib/ruby/gems/2.7.0/gems/database_cleaner-core-2.0.1/lib/database_cleaner/cleaners.rb:40:in `clean_with'
	 7: from /home/megatux/.asdf/installs/ruby/2.7.4/lib/ruby/gems/2.7.0/gems/database_cleaner-core-2.0.1/lib/database_cleaner/cleaners.rb:40:in `each'
	 6: from /home/megatux/.asdf/installs/ruby/2.7.4/lib/ruby/gems/2.7.0/gems/database_cleaner-core-2.0.1/lib/database_cleaner/cleaners.rb:40:in `block in clean_with'
	 5: from /home/megatux/.asdf/installs/ruby/2.7.4/lib/ruby/gems/2.7.0/gems/database_cleaner-core-2.0.1/lib/database_cleaner/cleaner.rb:65:in `clean_with'
	 4: from /home/megatux/.asdf/installs/ruby/2.7.4/lib/ruby/gems/2.7.0/gems/database_cleaner-active_record-2.0.1/lib/database_cleaner/active_record/truncation.rb:21:in `clean'
	 3: from /home/megatux/.asdf/installs/ruby/2.7.4/lib/ruby/gems/2.7.0/gems/database_cleaner-active_record-2.0.1/lib/database_cleaner/active_record/truncation.rb:33:in `connection'
	 2: from /home/megatux/.asdf/installs/ruby/2.7.4/lib/ruby/gems/2.7.0/gems/activerecord-6.1.4.1/lib/active_record/connection_handling.rb:283:in `connection'
	 1: from /home/megatux/.asdf/installs/ruby/2.7.4/lib/ruby/gems/2.7.0/gems/activerecord-6.1.4.1/lib/active_record/connection_handling.rb:327:in `retrieve_connection'
/home/megatux/.asdf/installs/ruby/2.7.4/lib/ruby/gems/2.7.0/gems/activerecord-6.1.4.1/lib/active_record/connection_adapters/abstract/connection_pool.rb:1125:in `retrieve_connection': No connection pool for 'ActiveRecord::Base' found. (ActiveRecord::ConnectionNotEstablished)

megatux avatar Nov 07 '21 22:11 megatux

@etagwerker are you able to reproduce this issue?

PetrKaleta avatar Jun 23 '22 15:06 PetrKaleta

Same here, stopped working. Pasting trace:

line 20 of test_helper.rb is this:

DatabaseCleaner.clean_with :truncation

10: from /run/media/megatux/6967f1a1-b777-4681-b35f-261f322cd933/code/newsan/newsan_tv_r1/test/test_helper.rb:20:in `<top (required)>'
	 9: from /home/megatux/.asdf/installs/ruby/2.7.4/lib/ruby/2.7.0/forwardable.rb:235:in `clean_with'
	 8: from /home/megatux/.asdf/installs/ruby/2.7.4/lib/ruby/gems/2.7.0/gems/database_cleaner-core-2.0.1/lib/database_cleaner/cleaners.rb:40:in `clean_with'
	 7: from /home/megatux/.asdf/installs/ruby/2.7.4/lib/ruby/gems/2.7.0/gems/database_cleaner-core-2.0.1/lib/database_cleaner/cleaners.rb:40:in `each'
	 6: from /home/megatux/.asdf/installs/ruby/2.7.4/lib/ruby/gems/2.7.0/gems/database_cleaner-core-2.0.1/lib/database_cleaner/cleaners.rb:40:in `block in clean_with'
	 5: from /home/megatux/.asdf/installs/ruby/2.7.4/lib/ruby/gems/2.7.0/gems/database_cleaner-core-2.0.1/lib/database_cleaner/cleaner.rb:65:in `clean_with'
	 4: from /home/megatux/.asdf/installs/ruby/2.7.4/lib/ruby/gems/2.7.0/gems/database_cleaner-active_record-2.0.1/lib/database_cleaner/active_record/truncation.rb:21:in `clean'
	 3: from /home/megatux/.asdf/installs/ruby/2.7.4/lib/ruby/gems/2.7.0/gems/database_cleaner-active_record-2.0.1/lib/database_cleaner/active_record/truncation.rb:33:in `connection'
	 2: from /home/megatux/.asdf/installs/ruby/2.7.4/lib/ruby/gems/2.7.0/gems/activerecord-6.1.4.1/lib/active_record/connection_handling.rb:283:in `connection'
	 1: from /home/megatux/.asdf/installs/ruby/2.7.4/lib/ruby/gems/2.7.0/gems/activerecord-6.1.4.1/lib/active_record/connection_handling.rb:327:in `retrieve_connection'
/home/megatux/.asdf/installs/ruby/2.7.4/lib/ruby/gems/2.7.0/gems/activerecord-6.1.4.1/lib/active_record/connection_adapters/abstract/connection_pool.rb:1125:in `retrieve_connection': No connection pool for 'ActiveRecord::Base' found. (ActiveRecord::ConnectionNotEstablished)

This looks like a different issue. In my case it is not raising any error...

PetrKaleta avatar Jul 27 '22 08:07 PetrKaleta

Hello, I just came back to this issue and tried to debug it. And I've found whats wrong...

When you use following example

before :each do
  DatabaseCleaner[:sequel, db: DEFAULT_DB].start
  DatabaseCleaner[:sequel, db: SHARED_DB].start
end

after :each do
  DatabaseCleaner[:sequel, db: DEFAULT_DB].clean
  DatabaseCleaner[:sequel, db: SHARED_DB].clean
end

Then database cleaner is not using DatabaseCleaner::Sequel::Transaction strategy (that should be default for Sequel), but instead of it uses DatabaseCleaner::NullStrategy. So setting strategy manually to transaction fixes the issue..

PetrKaleta avatar Dec 29 '22 10:12 PetrKaleta