Class: RedisMemo::AfterCommit

Inherits:
Object
  • Object
show all
Defined in:
lib/redis_memo/after_commit.rb

Overview

TODO: -> RedisMemo::Memoizable::AfterCommit

Defined Under Namespace

Classes: Callback

Constant Summary collapse

@@callback_added =

We assume there’s only one ActiveRecord DB connection used for opening transactions

false
@@pending_memo_versions =
{}
@@previous_memo_versions =
{}

Class Method Summary collapse

Class Method Details

.bump_memo_version_after_commit(key, version, previous_version:) ⇒ Object



23
24
25
26
27
28
# File 'lib/redis_memo/after_commit.rb', line 23

def self.bump_memo_version_after_commit(key, version, previous_version:)
  @@pending_memo_versions[key] = version
  @@previous_memo_versions[key] = previous_version

  reset_after_transaction
end

.connectionObject



11
12
13
# File 'lib/redis_memo/after_commit.rb', line 11

def self.connection
  ActiveRecord::Base.connection
end

.in_transaction?Boolean

Returns:

  • (Boolean)


32
33
34
35
# File 'lib/redis_memo/after_commit.rb', line 32

def self.in_transaction?
  # service transactions (tests and database_cleaner) are not joinable
  connection.transaction_open? && connection.current_transaction.joinable?
end

.pending_memo_versionsObject



15
16
17
18
19
20
21
# File 'lib/redis_memo/after_commit.rb', line 15

def self.pending_memo_versions
  # In DB transactions, the pending memo version should be used immediately
  # as part of method checksums. method_cache_keys made of
  # pending_memo_versions are not referencable until we bump the
  # pending_memo_versions after commiting the current transaction
  @@pending_memo_versions
end