Module: Kasket::ConfigurationMixin

Defined in:
lib/kasket/configuration_mixin.rb

Instance Method Summary collapse

Instance Method Details

#has_kasketObject



70
71
72
# File 'lib/kasket/configuration_mixin.rb', line 70

def has_kasket
  has_kasket_on :id
end

#has_kasket_index_on?(sorted_attributes) ⇒ Boolean

Returns:

  • (Boolean)


66
67
68
# File 'lib/kasket/configuration_mixin.rb', line 66

def has_kasket_index_on?(sorted_attributes)
  kasket_indices.include?(sorted_attributes)
end

#has_kasket_on(*args) ⇒ Object



74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
# File 'lib/kasket/configuration_mixin.rb', line 74

def has_kasket_on(*args)
  attributes = args.sort_by!(&:to_s)

  # enforce id index
  if attributes != [:id] && !has_kasket_index_on?([:id])
    has_kasket_on(:id)
  end

  @kasket_indices ||= []
  @kasket_indices << attributes unless @kasket_indices.include?(attributes)

  include WriteMixin unless include?(WriteMixin)
  extend DirtyMixin unless respond_to?(:kasket_dirty_methods)
  extend ReadMixin unless methods.map(&:to_sym).include?(:find_by_sql_with_kasket)
end

#kasket_activerecord_versionObject



30
31
32
# File 'lib/kasket/configuration_mixin.rb', line 30

def kasket_activerecord_version
  "R#{ActiveRecord::VERSION::MAJOR}#{ActiveRecord::VERSION::MINOR}"
end

#kasket_expires_in(time) ⇒ Object



90
91
92
# File 'lib/kasket/configuration_mixin.rb', line 90

def kasket_expires_in(time)
  @kasket_ttl = time
end

#kasket_indicesObject



56
57
58
59
60
61
62
63
64
# File 'lib/kasket/configuration_mixin.rb', line 56

def kasket_indices
  result = if defined?(@kasket_indices) && @kasket_indices
    @kasket_indices
  else
    []
  end
  result += superclass.kasket_indices unless self == ActiveRecord::Base
  result.uniq
end

#kasket_key_for(attribute_value_pairs) ⇒ Object



34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
# File 'lib/kasket/configuration_mixin.rb', line 34

def kasket_key_for(attribute_value_pairs)
  if attribute_value_pairs.size == 1 && attribute_value_pairs[0][0] == :id && attribute_value_pairs[0][1].is_a?(Array)
    attribute_value_pairs[0][1].map {|id| kasket_key_for_id(id)}
  else
    key = attribute_value_pairs.map do |attribute, value|
      column = columns_hash[attribute.to_s]
      value = nil if value.blank? && value != false
      "#{attribute}=#{kasket_quoted_value_for_column(value, column)}"
    end.join('/')

    if key.size > (250 - kasket_key_prefix.size) || key =~ /\s/
      key = Digest::MD5.hexdigest(key)
    end

    kasket_key_prefix + key
  end
end

#kasket_key_for_id(id) ⇒ Object



52
53
54
# File 'lib/kasket/configuration_mixin.rb', line 52

def kasket_key_for_id(id)
  kasket_key_for([['id', id]])
end

#kasket_key_prefixObject



23
24
25
26
27
28
# File 'lib/kasket/configuration_mixin.rb', line 23

def kasket_key_prefix
  @kasket_key_prefix ||= begin
    column_hash = column_names.join.sum
    "kasket-#{Kasket::Version::PROTOCOL}/#{kasket_activerecord_version}/#{table_name}/version=#{column_hash}/"
  end
end

#kasket_parserObject



19
20
21
# File 'lib/kasket/configuration_mixin.rb', line 19

def kasket_parser
  @kasket_parser ||= QueryParser.new(self)
end

#kasket_ttlObject



94
95
96
97
# File 'lib/kasket/configuration_mixin.rb', line 94

def kasket_ttl
  @kasket_ttl ||= nil
  @kasket_ttl || Kasket::CONFIGURATION[:default_expires_in]
end

#use_kasket?Boolean

Returns:

  • (Boolean)


15
16
17
# File 'lib/kasket/configuration_mixin.rb', line 15

def use_kasket?
  !Thread.current[:kasket_disabled]
end

#without_kasketObject



7
8
9
10
11
12
13
# File 'lib/kasket/configuration_mixin.rb', line 7

def without_kasket
  old_value = Thread.current[:kasket_disabled] || false
  Thread.current[:kasket_disabled] = true
  yield
ensure
  Thread.current[:kasket_disabled] = old_value
end