Class: Indexers::Dsl::Traitable
- Defined in:
- lib/indexers/dsl/traitable.rb
Direct Known Subclasses
Instance Method Summary collapse
-
#initialize(indexer = nil, args = [], parent = {}, binding = nil, &block) ⇒ Traitable
constructor
A new instance of Traitable.
- #method_missing(name, *args, &block) ⇒ Object
- #traits(*names) ⇒ Object
Methods inherited from Api
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.[:traits][name] end @binding = nil end end |