Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Open
PetrKaleta opened this issue Apr 8, 2021 · 4 comments

Comments

@PetrKaleta
Copy link

PetrKaleta commented Apr 8, 2021

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...

@megatux
Copy link

megatux commented Nov 7, 2021

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)

@PetrKaleta
Copy link
Author

@etagwerker are you able to reproduce this issue?

@PetrKaleta PetrKaleta changed the title Upgrade to 2.0.0 DB not cleaned after upgrade to 2.0.2 from 1.x.x Jun 23, 2022
@PetrKaleta
Copy link
Author

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 PetrKaleta changed the title DB not cleaned after upgrade to 2.0.2 from 1.x.x DBs not cleaned when using multiple DBs after upgrade to 2.x.x from 1.8.0 Jul 27, 2022
@PetrKaleta
Copy link
Author

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..

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants