Class: Fauna::DSLContext

Inherits:
Object
  • Object
show all
Defined in:
lib/fauna/util.rb

Overview

:nodoc:

Direct Known Subclasses

Query::QueryDSLContext

Constant Summary collapse

NON_PROXIED_METHODS =
Set.new %w(__send__ object_id __id__ == equal?
   ! != instance_exec instance_variables
   instance_variable_get instance_variable_set
).map(&:to_sym)

Class Method Summary collapse

Instance Method Summary collapse

Dynamic Method Handling

This class handles dynamic methods through the method_missing method

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



46
47
48
# File 'lib/fauna/util.rb', line 46

def method_missing(method, *args, &block)
  @__ctx__.send(method, *args, &block)
end

Class Method Details

.eval_dsl(dsl, *args, &blk) ⇒ Object



19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
# File 'lib/fauna/util.rb', line 19

def self.eval_dsl(dsl, *args, &blk)
  ctx = eval('self', blk.binding)
  dsl.instance_variable_set(:@__ctx__, ctx)

  ctx.instance_variables.each do |iv|
    dsl.instance_variable_set(iv, ctx.instance_variable_get(iv))
  end

  dsl.instance_exec(*args, &blk)

ensure
  dsl.instance_variables.each do |iv|
    if iv.to_sym != :@__ctx__
      ctx.instance_variable_set(iv, dsl.instance_variable_get(iv))
    end
  end
end