Class: Indexers::Dsl::Traitable

Inherits:
Api
  • Object
show all
Defined in:
lib/indexers/dsl/traitable.rb

Direct Known Subclasses

Search, Serialization

Instance Method Summary collapse

Methods inherited from Api

#to_h

Constructor Details

#initialize(indexer = nil, args = [], parent = {}, binding = nil, &block) ⇒ Traitable

Returns a new instance of Traitable.



5
6
7
8
9
10
# File 'lib/indexers/dsl/traitable.rb', line 5

def initialize(indexer=nil, args=[], parent={}, binding=nil, &block)
  @indexer = indexer
  @binding = binding
  @block = block
  super args, parent, &block
end

Dynamic Method Handling

This class handles dynamic methods through the method_missing method

#method_missing(name, *args, &block) ⇒ Object



22
23
24
25
26
27
28
# File 'lib/indexers/dsl/traitable.rb', line 22

def method_missing(name, *args, &block)
  if args.size == 0 && !block_given? && @binding.try(:local_variable_defined?, name)
    @binding.local_variable_get name
  else
    super
  end
end

Instance Method Details

#traits(*names) ⇒ Object



12
13
14
15
16
17
18
19
20
# File 'lib/indexers/dsl/traitable.rb', line 12

def traits(*names)
  if @indexer
    @binding = @block.binding
    names.each do |name|
      instance_eval &@indexer.options[:traits][name]
    end
    @binding = nil
  end
end