Module: Persistence::Object::Index::BlockIndex::BlockIndexInterface
- Includes:
- CascadingConfiguration::Array, CascadingConfiguration::Setting, Persistence::Object::Index
- Defined in:
- lib/persistence/object/index/block_index/block_index_interface.rb
Overview
Interface for block index instances, which index keys provided by running a Proc on an object instance.
Instance Attribute Summary
Attributes included from Persistence::Object::Index
Instance Method Summary collapse
-
#index_object(object) ⇒ Object
Index keys for object instance.
-
#indexing_procs ⇒ CompositingArray<Proc>
Procs used to generate keys.
- #initialize(index_name, parent_bucket, permits_duplicates = nil, sorting_proc_or_sort_names = nil, duplicates_sorting_proc_or_sort_names = nil, ancestor_index_instance = nil) {|object| ... } ⇒ Object
-
#permits_nil_keys? ⇒ true, false
Whether index permits nil keys be generated when block is run.
-
#requires_keys ⇒ true, false
Whether index requires keys be generated when block is run.
Methods included from Persistence::Object::Index
#adapter_index, #atomic_cursor, #count, #cursor, #delete_keys_for_object!, #delete_keys_for_object_id!, #disable, #each, #get_object_id, #index_existing_objects, #index_object_id, #init_sorting_procs, #initialize_for_bucket, #name, #permits_duplicates?, #persisted?, #sorting_proc_for_sort_name
Instance Method Details
#index_object(object) ⇒ Object
Index keys for object instance.
78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 |
# File 'lib/persistence/object/index/block_index/block_index_interface.rb', line 78 def index_object( object ) # get key(s) from block(s) keys = [ ] indexing_procs.each do |this_indexing_proc| if block_return = object.instance_eval( & this_indexing_proc ) or permits_nil_keys? keys.push( block_return ) end end if keys.empty? if requires_keys raise ::Persistence::Exception::IndexingBlockFailedToGenerateKeys.new, 'Index block failed to generate keys, which were required.' end else super( object, *keys ) end return self end |
#indexing_procs ⇒ CompositingArray<Proc>
Procs used to generate keys.
67 |
# File 'lib/persistence/object/index/block_index/block_index_interface.rb', line 67 attr_array :indexing_procs |
#initialize(index_name, parent_bucket, permits_duplicates = nil, sorting_proc_or_sort_names = nil, duplicates_sorting_proc_or_sort_names = nil, ancestor_index_instance = nil) {|object| ... } ⇒ Object
17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
# File 'lib/persistence/object/index/block_index/block_index_interface.rb', line 17 def initialize( index_name, parent_bucket, permits_duplicates = nil, sorting_proc_or_sort_names = nil, duplicates_sorting_proc_or_sort_names = nil, ancestor_index_instance = nil, & indexing_block ) super if block_given? indexing_procs.push( indexing_block ) elsif indexing_procs.empty? raise ::Persistence::Exception::BlockRequired, 'Block required for index.' end end |
#permits_nil_keys? ⇒ true, false
Whether index permits nil keys be generated when block is run.
56 |
# File 'lib/persistence/object/index/block_index/block_index_interface.rb', line 56 attr_setting :permits_nil_keys? |
#requires_keys ⇒ true, false
Whether index requires keys be generated when block is run.
45 |
# File 'lib/persistence/object/index/block_index/block_index_interface.rb', line 45 attr_setting :requires_keys |