class DatabaseCleaner::Sequel::Transaction
Public Class Methods
check_fiber_brokenness()
click to toggle source
# File lib/database_cleaner/sequel/transaction.rb, line 7 def self.check_fiber_brokenness if !@checked_fiber_brokenness && Fiber.new { Thread.current }.resume != Thread.current raise RuntimeError, "This ruby engine's Fibers are not compatible with Sequel's connection pool. " + "To work around this, please use DatabaseCleaner.cleaning with a block instead of " + "DatabaseCleaner.start and DatabaseCleaner.clean" end @checked_fiber_brokenness = true end
Public Instance Methods
clean()
click to toggle source
# File lib/database_cleaner/sequel/transaction.rb, line 30 def clean f = @fibers.pop f.resume end
cleaning() { || ... }
click to toggle source
# File lib/database_cleaner/sequel/transaction.rb, line 35 def cleaning self.db.transaction(:rollback => :always, :savepoint => true) { yield } end
start()
click to toggle source
# File lib/database_cleaner/sequel/transaction.rb, line 16 def start self.class.check_fiber_brokenness @fibers ||= [] db = self.db f = Fiber.new do db.transaction(:rollback => :always, :savepoint => true) do Fiber.yield end end f.resume @fibers << f end