Module: Kasket::ConfigurationMixin
- Defined in:
- lib/kasket/configuration_mixin.rb
Instance Method Summary collapse
- #has_kasket ⇒ Object
- #has_kasket_index_on?(sorted_attributes) ⇒ Boolean
- #has_kasket_on(*args) ⇒ Object
- #kasket_activerecord_version ⇒ Object
- #kasket_expires_in(time) ⇒ Object
- #kasket_indices ⇒ Object
- #kasket_key_for(attribute_value_pairs) ⇒ Object
- #kasket_key_for_id(id) ⇒ Object
- #kasket_key_prefix ⇒ Object
- #kasket_parser ⇒ Object
- #kasket_ttl ⇒ Object
- #use_kasket? ⇒ Boolean
- #without_kasket ⇒ Object
Instance Method Details
#has_kasket ⇒ Object
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
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_version ⇒ Object
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_indices ⇒ Object
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_prefix ⇒ Object
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_parser ⇒ Object
19 20 21 |
# File 'lib/kasket/configuration_mixin.rb', line 19 def kasket_parser @kasket_parser ||= QueryParser.new(self) end |
#kasket_ttl ⇒ Object
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
15 16 17 |
# File 'lib/kasket/configuration_mixin.rb', line 15 def use_kasket? !Thread.current[:kasket_disabled] end |
#without_kasket ⇒ Object
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 |