class Pendragon::Router::Route
Class for delegation based structure. @!visibility private
Attributes
path[R]
@!visibility private
pattern[RW]
@!visibility private
request_method[R]
@!visibility private
Public Class Methods
new(method:, pattern:, application:, **attributes)
click to toggle source
@!visibility private
Calls superclass method
# File lib/pendragon/router.rb, line 126 def initialize(method:, pattern:, application:, **attributes) super(attributes) @app = application @path = pattern @pattern = Mustermann.new(pattern) @executable = to_executable @request_method = method.to_s.upcase end
Public Instance Methods
exec(env)
click to toggle source
@!visibility private
# File lib/pendragon/router.rb, line 137 def exec(env) return @app.call(env) unless executable? path_info = env[Constants::Env::PATH_INFO] params = pattern.params(path_info) captures = pattern.match(path_info).captures Context.new(env, params: params, captures: captures).trigger(@executable) end
Private Instance Methods
executable?()
click to toggle source
@!visibility private
# File lib/pendragon/router.rb, line 148 def executable? @app.kind_of?(Proc) end
to_executable()
click to toggle source
@!visibility private
# File lib/pendragon/router.rb, line 153 def to_executable return @app unless executable? Context.to_method(request_method, path, @app) end