Class: Crspec::Rails::DatabaseIsolation
- Inherits:
-
Object
- Object
- Crspec::Rails::DatabaseIsolation
show all
- Defined in:
- lib/crspec/rails/database_isolation.rb
Defined Under Namespace
Modules: ConnectionHandoff
Constant Summary
collapse
- LEASES_KEY =
:crspec_db_leases
Class Method Summary
collapse
Class Method Details
.finish_worker ⇒ Object
22
23
24
25
26
27
28
29
30
31
32
33
34
35
|
# File 'lib/crspec/rails/database_isolation.rb', line 22
def finish_worker
leases = Fiber[LEASES_KEY]
return unless leases
Fiber[LEASES_KEY] = nil
leases.each do |pool, conn|
begin
conn.rollback_transaction while conn.open_transactions.positive?
rescue StandardError
nil
end
release(pool, conn)
end
end
|
.handoff_connection(pool) ⇒ Object
37
38
39
|
# File 'lib/crspec/rails/database_isolation.rb', line 37
def handoff_connection(pool)
Fiber[LEASES_KEY]&.[](pool)
end
|
.wrap_example(example) ⇒ Object
9
10
11
12
13
14
15
16
17
18
19
20
|
# File 'lib/crspec/rails/database_isolation.rb', line 9
def wrap_example(example)
return example.execute! unless active_record_ready?
pools = writing_pools
return example.execute! if pools.empty?
if pools.any? { |pool| sqlite_pool?(pool) }
serialized_example(pools) { example.execute! }
else
savepoint_example { example.execute! }
end
end
|