Module: Kasket::ConfigurationMixin

Defined in:
lib/kasket/configuration_mixin.rb

Instance Method Summary collapse

Instance Method Details

#convert_number_column_value(value) ⇒ Object



43
44
45
46
47
48
49
50
51
52
53
# File 'lib/kasket/configuration_mixin.rb', line 43

def convert_number_column_value(value)
  if value == false
    0
  elsif value == true
    1
  elsif value.is_a?(String) && value.blank?
    nil
  else
    value
  end
end

#has_kasket(options = {}) ⇒ Object



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

def has_kasket(options = {})
  has_kasket_on :id
end

#has_kasket_index_on?(sorted_attributes) ⇒ Boolean

Returns:

  • (Boolean)


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

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

#has_kasket_on(*args) ⇒ Object



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

def has_kasket_on(*args)
  attributes = args.sort! { |x, y| x.to_s <=> y.to_s }
  if attributes != [:id] && !kasket_indices.include?([:id])
    has_kasket_on(:id)
  end

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

  include WriteMixin unless instance_methods.include?('store_in_kasket')
  extend DirtyMixin unless methods.include?('kasket_dirty_methods')
  extend ReadMixin unless methods.include?('find_by_sql_with_kasket')
end

#kasket_indicesObject



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

def kasket_indices
  result = @kasket_indices || []
  result += superclass.kasket_indices unless self == ActiveRecord::Base
  result.uniq
end

#kasket_key_for(attribute_value_pairs) ⇒ Object



31
32
33
34
35
36
37
38
39
40
41
# File 'lib/kasket/configuration_mixin.rb', line 31

def kasket_key_for(attribute_value_pairs)
  kasket_key_prefix + attribute_value_pairs.map do |attribute, value|
    if value.nil?
      attribute.to_s + '='
    elsif (column = columns_hash[attribute.to_s]) && column.number?
      attribute.to_s + '=' + convert_number_column_value(value.to_s)
    else
      attribute.to_s + '=' + connection.quote(value.to_s)
    end
  end.join('/')
end

#kasket_key_for_id(id) ⇒ Object



55
56
57
# File 'lib/kasket/configuration_mixin.rb', line 55

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

#kasket_key_prefixObject



27
28
29
# File 'lib/kasket/configuration_mixin.rb', line 27

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

#kasket_parserObject



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

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

#use_kasket?Boolean

Returns:

  • (Boolean)


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

def use_kasket?
  @use_kasket != false
end

#without_kasket(&block) ⇒ Object



11
12
13
14
15
16
17
# File 'lib/kasket/configuration_mixin.rb', line 11

def without_kasket(&block)
  old_value = @use_kasket || true
  @use_kasket = false
  yield
ensure
  @use_kasket = old_value
end