Module: RR::Committers

Defined in:
lib/rubyrep/committers/committers.rb,
lib/rubyrep/committers/buffered_committer.rb

Overview

Committers are classes that implement transaction policies. This module provides functionality to register committers and access the list of registered committers. Every Committer needs to register itself with Committers#register. Each Committer must implement at the following methods:

# Creates a new committer
#   * session: a Session object representing the current database session
def initialize(session)

# Inserts the specified record in the specified +database+ (either :left or :right).
# +table+ is the name of the target table.
# +values+ is a hash of column_name => value pairs.
def insert_record(database, values)

# Updates the specified record in the specified +database+ (either :left or :right).
# +table+ is the name of the target table.
# +values+ is a hash of column_name => value pairs.
# +old_key+ is a column_name => value hash with the original primary key.
# If +old_key+ is +nil+, then the primary key must be contained in +values+.
def update_record(database, values, old_key)

# Deletes the specified record in the specified +database+ (either :left or :right).
# +table+ is the name of the target table.
# +values+ is a hash of column_name => value pairs. (Only the primary key
# values will be used and must be included in the hash.)
def delete_record(database, values)

# Is called after the last insert / update / delete query.
def finalize

Defined Under Namespace

Classes: BufferedCommitter, DefaultCommitter, NeverCommitter

Class Method Summary collapse

Class Method Details

.committersObject

Returns a Hash of currently registered committers. (Empty Hash if no connection committers were defined.)



36
37
38
39
# File 'lib/rubyrep/committers/committers.rb', line 36

def self.committers
  @committers ||= {}
  @committers
end

.register(committer_hash) ⇒ Object

Registers one or multiple committers. committer_hash is a Hash with

key::   The adapter symbol as used to reference the committer
value:: The class implementing the committer


45
46
47
48
# File 'lib/rubyrep/committers/committers.rb', line 45

def self.register(committer_hash)
  @committers ||= {}
  @committers.merge! committer_hash
end