module Kasket::ConfigurationMixin
Public Instance Methods
has_kasket()
click to toggle source
# File lib/kasket/configuration_mixin.rb, line 70 def has_kasket has_kasket_on :id end
has_kasket_index_on?(sorted_attributes)
click to toggle source
# 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)
click to toggle source
# 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_version()
click to toggle source
# File lib/kasket/configuration_mixin.rb, line 30 def kasket_activerecord_version "R#{ActiveRecord::VERSION::MAJOR}#{ActiveRecord::VERSION::MINOR}" end
kasket_expires_in(time)
click to toggle source
# File lib/kasket/configuration_mixin.rb, line 90 def kasket_expires_in(time) @kasket_ttl = time end
kasket_indices()
click to toggle source
# 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)
click to toggle source
# 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)
click to toggle source
# File lib/kasket/configuration_mixin.rb, line 52 def kasket_key_for_id(id) kasket_key_for([['id', id]]) end
kasket_key_prefix()
click to toggle source
# 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_parser()
click to toggle source
# File lib/kasket/configuration_mixin.rb, line 19 def kasket_parser @kasket_parser ||= QueryParser.new(self) end
kasket_ttl()
click to toggle source
# File lib/kasket/configuration_mixin.rb, line 94 def kasket_ttl @kasket_ttl ||= nil @kasket_ttl || Kasket::CONFIGURATION[:default_expires_in] end
use_kasket?()
click to toggle source
# File lib/kasket/configuration_mixin.rb, line 15 def use_kasket? !Thread.current[:kasket_disabled] end
without_kasket() { || ... }
click to toggle source
# 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
Private Instance Methods
kasket_quoted_value_for_column(value, column)
click to toggle source
# File lib/kasket/configuration_mixin.rb, line 101 def kasket_quoted_value_for_column(value, column) if column conn = connection type = conn.lookup_cast_type_from_column(column) casted_value = conn.type_cast(type.serialize(value)) conn.quote(casted_value).downcase else value.to_s end end