class DatabaseCleaner::Sequel::Deletion
Public Instance Methods
clean()
click to toggle source
# File lib/database_cleaner/sequel/deletion.rb, line 36 def clean return unless dirty? tables = tables_to_truncate(db) db.transaction do disable_referential_integrity(tables) do delete_tables(db, tables) end end end
delete_tables(db, tables)
click to toggle source
# File lib/database_cleaner/sequel/deletion.rb, line 30 def delete_tables(db, tables) tables.each do |table| db[table.to_sym].delete end end
disable_referential_integrity(tables) { || ... }
click to toggle source
# File lib/database_cleaner/sequel/deletion.rb, line 7 def disable_referential_integrity(tables) case db.database_type when :postgres db.run('SET CONSTRAINTS ALL DEFERRED') tables_to_truncate(db).each do |table| db.run("ALTER TABLE \"#{table}\" DISABLE TRIGGER ALL") end when :mysql old = db.fetch('SELECT @@FOREIGN_KEY_CHECKS').first[:@@FOREIGN_KEY_CHECKS] db.run('SET FOREIGN_KEY_CHECKS = 0') end yield ensure case db.database_type when :postgres tables.each do |table| db.run("ALTER TABLE \"#{table}\" ENABLE TRIGGER ALL") end when :mysql db.run("SET FOREIGN_KEY_CHECKS = #{old}") end end