Module: GraphQL::Client::ConstProxy

Defined in:
lib/graphql/client/const_proxy.rb

Overview

Internal: Hack to track the constant name an object is assigned to.

FooConstant = ConstProxy.new { |name|
  name # "FooConstant"
}

Class Method Summary collapse

Instance Method Summary collapse

Dynamic Method Handling

This class handles dynamic methods through the method_missing method

#method_missing(*args, &block) ⇒ Object



23
24
25
26
# File 'lib/graphql/client/const_proxy.rb', line 23

def method_missing(*args, &block)
  @target ||= @initializer.call(self.name)
  @target.send(*args, &block)
end

Class Method Details

.new(&initializer) ⇒ Object

Raises:

  • (ArgumentError)


10
11
12
13
14
15
16
17
# File 'lib/graphql/client/const_proxy.rb', line 10

def self.new(&initializer)
  raise ArgumentError, "initializer required" unless block_given?

  Module.new do
    extend ConstProxy
    @initializer = initializer
  end
end

Instance Method Details

#nameObject



19
20
21
# File 'lib/graphql/client/const_proxy.rb', line 19

def name
  super || raise(RuntimeError, "expected object to be assigned to a constant")
end