Module: ArCache::ActiveRecord::ConnectionAdapters::Transaction
- Includes:
- NullTransaction
- Defined in:
- lib/ar_cache/active_record/connection_adapters/abstract/transaction.rb
Instance Attribute Summary collapse
Instance Method Summary
collapse
#handle_ar_cache_primary_keys
Instance Attribute Details
#ar_cache_primary_keys ⇒ Object
Returns the value of attribute ar_cache_primary_keys.
27
28
29
|
# File 'lib/ar_cache/active_record/connection_adapters/abstract/transaction.rb', line 27
def ar_cache_primary_keys
@ar_cache_primary_keys
end
|
#ar_cache_tables ⇒ Object
Returns the value of attribute ar_cache_tables.
27
28
29
|
# File 'lib/ar_cache/active_record/connection_adapters/abstract/transaction.rb', line 27
def ar_cache_tables
@ar_cache_tables
end
|
Instance Method Details
#commit ⇒ Object
FIXME: The cache is removed after transaction commited, so dirty read may occur.
52
53
54
55
56
57
58
59
60
61
62
|
# File 'lib/ar_cache/active_record/connection_adapters/abstract/transaction.rb', line 52
def commit
super
ensure
if @run_commit_callbacks
handle_ar_cache_primary_keys(ar_cache_primary_keys.uniq) if ar_cache_primary_keys.any?
ar_cache_tables.uniq(&:name).each(&:update_cache) if ar_cache_tables.any?
else
connection.current_transaction.ar_cache_tables.push(*ar_cache_tables)
connection.current_transaction.ar_cache_primary_keys.push(*ar_cache_primary_keys)
end
end
|
#delete_ar_cache_primary_keys(keys, table) ⇒ Object
35
36
37
38
39
40
41
|
# File 'lib/ar_cache/active_record/connection_adapters/abstract/transaction.rb', line 35
def delete_ar_cache_primary_keys(keys, table)
connection.transaction_manager.add_transaction_table(table.name)
return if table.disabled?
super if read_uncommitted?
ar_cache_primary_keys.push(*keys)
end
|
#initialize ⇒ Object
29
30
31
32
33
|
# File 'lib/ar_cache/active_record/connection_adapters/abstract/transaction.rb', line 29
def initialize(...)
super
@ar_cache_primary_keys = []
@ar_cache_tables = []
end
|
#read_uncommitted? ⇒ Boolean
64
65
66
|
# File 'lib/ar_cache/active_record/connection_adapters/abstract/transaction.rb', line 64
def read_uncommitted?
isolation_level == :read_uncommitted || !connection.transaction_manager.fully_joinable?
end
|
#update_ar_cache_table(table) ⇒ Object
43
44
45
46
47
48
49
|
# File 'lib/ar_cache/active_record/connection_adapters/abstract/transaction.rb', line 43
def update_ar_cache_table(table)
connection.transaction_manager.add_transaction_table(table.name)
return if table.disabled?
super if read_uncommitted?
ar_cache_tables.push(table)
end
|