Module: Audit::Log

Defined in:
lib/audit/log.rb

Overview

Methods for manipulating audit data stored in Cassandra.

Class Method Summary collapse

Class Method Details

.audits(bucket, key) ⇒ Object

Fetch all audits for a given record.

bucket - the String name for the logical bucket this audit record belongs

to (i.e. table)

key - the String key into the logical bucket

Returns an Array of Changeset objects



34
35
36
37
38
39
40
# File 'lib/audit/log.rb', line 34

def self.audits(bucket, key)
  # TODO: figure out how to do pagination here
  payload = connection.get(:Audits, "#{bucket}:#{key}", :reversed => true)
  payload.values.map do |p|
    Audit::Changeset.from_enumerable(Yajl::Parser.parse(p))
  end
end

.clear!Object

Clear all audit data. Note that this doesn’t yet operate on logical buckets. All of the audit data is destroyed. Proceed with caution.

Returns nothing.



47
48
49
50
# File 'lib/audit/log.rb', line 47

def self.clear!
  # It'd be nice if this could clear one bucket at a time
  connection.clear_keyspace!
end

.record(bucket, key, timestamp, changes) ⇒ Object

Store an audit record.

bucket - the String name for the logical bucket this audit record belongs

to (i.e. table)

key - the String key into the logical bucket timestamp - timestamp to use for this record’s UUID changes - the changes hash (as generated by ActiveRecord) to store

Returns nothing.



21
22
23
24
25
# File 'lib/audit/log.rb', line 21

def self.record(bucket, key, timestamp, changes)
  json = Yajl::Encoder.encode(changes)
  payload = {timestamp => json}
  connection.insert(:Audits, "#{bucket}:#{key}", payload)
end