123456789_123456789_123456789_123456789_123456789_

Module: Sinatra::Delegator

Relationships & Source Files
Extension / Inclusion / Inheritance Descendants
Included In:
Defined in: lib/sinatra/base.rb

Overview

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

Class Attribute Summary

Class Method Summary

Class Attribute Details

.target (rw)

[ GitHub ]

  
# File 'lib/sinatra/base.rb', line 2094

attr_accessor :target

Class Method Details

.delegate(*methods)

This method is for internal use only.
[ GitHub ]

  
# File 'lib/sinatra/base.rb', line 2075

def self.delegate(*methods)
  methods.each do |method_name|
    define_method(method_name) do |*args, &block|
      return super(*args, &block) if respond_to? method_name

      Delegator.target.send(method_name, *args, &block)
    end
    # ensure keyword argument passing is compatible with ruby >= 2.7
    ruby2_keywords(method_name) if respond_to?(:ruby2_keywords, true)
    private method_name
  end
end