module Kasket

Constants

CONFIGURATION
VERSION

Public Class Methods

add_pending_record(record, destroyed = false) click to toggle source
# File lib/kasket.rb, line 71
def self.add_pending_record(record, destroyed = false)
  Thread.current[:kasket_pending_records] ||= {}
  Thread.current[:kasket_pending_records][record] = destroyed ? nil : record
end
cache()
Alias for: cache_store
cache_store() click to toggle source
# File lib/kasket.rb, line 56
def self.cache_store
  @cache_store ||= Rails.cache
end
Also aliased as: cache
cache_store=(options) click to toggle source
# File lib/kasket.rb, line 52
def self.cache_store=(options)
  @cache_store = ActiveSupport::Cache.lookup_store(options)
end
clear_pending_records() click to toggle source
# File lib/kasket.rb, line 76
def self.clear_pending_records
  Thread.current[:kasket_pending_records] = nil
end
pending_records() click to toggle source

Keys are the records being saved. Values are either the saved record, or nil if the record has been destroyed.

# File lib/kasket.rb, line 67
def self.pending_records
  Thread.current[:kasket_pending_records]
end

Public Instance Methods

setup(options = {}) click to toggle source

Configure Kasket.

@param [Hash] options the configuration options for Kasket. @option options [Integer] :max_collection_size max size limit for a cacheable

collection of records.

@option options [Boolean] :write_through @option options [Integer, nil] :default_expires_in the cache TTL. @option options [#call] :events_callback a callable object used to instrument

Kasket operations. It is invoked with two arguments: the name of the event,
as a String, and the Klass of the ActiveRecord model the event is about.
# File lib/kasket.rb, line 39
def setup(options = {})
  return if ActiveRecord::Base.respond_to?(:has_kasket)

  CONFIGURATION[:max_collection_size] = options[:max_collection_size] if options[:max_collection_size]
  CONFIGURATION[:write_through]       = options[:write_through]       if options[:write_through]
  CONFIGURATION[:default_expires_in]  = options[:default_expires_in]  if options[:default_expires_in]
  CONFIGURATION[:events_callback]     = options[:events_callback]     if options[:events_callback]

  ActiveRecord::Base.extend(Kasket::ConfigurationMixin)
  ActiveRecord::Relation.include(Kasket::RelationMixin)
  Arel::SelectManager.include(Kasket::SelectManagerMixin)
end