Module: Kasket::ConfigurationMixin
- Defined in:
- lib/kasket/configuration_mixin.rb
Instance Method Summary collapse
- #convert_number_column_value(value) ⇒ Object
- #has_kasket(options = {}) ⇒ Object
- #has_kasket_index_on?(sorted_attributes) ⇒ Boolean
- #has_kasket_on(*args) ⇒ Object
- #kasket_indices ⇒ Object
- #kasket_key_for(attribute_value_pairs) ⇒ Object
- #kasket_key_for_id(id) ⇒ Object
- #kasket_key_prefix ⇒ Object
- #kasket_parser ⇒ Object
- #use_kasket? ⇒ Boolean
- #without_kasket(&block) ⇒ Object
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( = {}) has_kasket_on :id end |
#has_kasket_index_on?(sorted_attributes) ⇒ 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_indices ⇒ Object
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_prefix ⇒ Object
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_parser ⇒ Object
23 24 25 |
# File 'lib/kasket/configuration_mixin.rb', line 23 def kasket_parser @kasket_parser ||= QueryParser.new(self) end |
#use_kasket? ⇒ 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 |