Module: Cyberweb::REST::Delegator

Included in:
Rack::Builder
Defined in:
lib/cyberweb/REST/base/delegator.rb

Overview

#

Sinatra delegation mixin. Mixing this module into an object causes all methods to be delegated to the Sinatra::Application class. Used primarily at the top-level.

#

Class Attribute Summary collapse

Class Method Summary collapse

Class Attribute Details

.targetObject

#

Cyberweb::REST::Delegator.target

#


71
72
73
# File 'lib/cyberweb/REST/base/delegator.rb', line 71

def target
  @target
end

Class Method Details

.delegate(*methods) ⇒ Object

#

Cyberweb::REST::Delegator.delegate

#


25
26
27
28
29
30
31
32
33
34
35
36
37
# File 'lib/cyberweb/REST/base/delegator.rb', line 25

def self.delegate(*methods)
  methods.each { |method_name|
    define_method(method_name) { |*args, &block|
      return super(*args, &block) if respond_to? method_name
      ::Cyberweb::REST::Delegator.target.send(method_name, *args, &block)
    }
    # ===================================================================== #
    # ensure keyword argument passing is compatible with ruby >= 2.7
    # ===================================================================== #
    ruby2_keywords(method_name) if respond_to?(:ruby2_keywords, true)
    private method_name
  }
end