Class: Mustermann::Router::Rack

Inherits:
Simple show all
Defined in:
lib/mustermann/router/rack.rb

Overview

Simple pattern based router that allows matching paths to a given Rack application.

Examples:

config.ru

router = Mustermann::Rack.new do
  on '/' do |env|
    [200, {'Content-Type' => 'text/plain'}, ['Hello World!']]
  end

  on '/:name' do |env|
    name = env['mustermann.params']['name']
    [200, {'Content-Type' => 'text/plain'}, ["Hello #{name}!"]]
  end

  on '/something/*', call: SomeApp
end

# in a config.ru
run router

Instance Attribute Summary

Attributes inherited from Mustermann::RegexpBased

#regexp

Instance Method Summary collapse

Methods inherited from Pattern

#===, #=~, #expand, #match, #named_captures, #names, new, #params, supported?, supported_options, #to_s

Methods included from Mustermann

[], new

Constructor Details

#initialize(env_prefix: "mustermann", params_key: "#{env_prefix}.params", pattern_key: "#{env_prefix}.pattern", **options, &block) ⇒ Rack

Returns a new instance of Rack.



24
25
26
27
28
# File 'lib/mustermann/router/rack.rb', line 24

def initialize(env_prefix: "mustermann", params_key: "#{env_prefix}.params", pattern_key: "#{env_prefix}.pattern", **options, &block)
  @params_key, @pattern_key = params_key, pattern_key
  options[:default] = [404, {"Content-Type" => "text/plain", "X-Cascade" => "pass"}, ["Not Found"]] unless options.include? :default
  super(**options, &block)
end