Method: HttpRouter#initialize

Defined in:
lib/http_router.rb

#initialize(*args, &blk) ⇒ HttpRouter

Creates a new HttpRouter. Can be called with either HttpRouter.new(proc{|env| ... }, { .. options .. }) or with the first argument omitted. If there is a proc first, then it’s used as the default app in the case of a non-match. Supported options are

  • :default_app – Default application used if there is a non-match on #call. Defaults to 404 generator.

  • :ignore_trailing_slash – Ignore a trailing / when attempting to match. Defaults to true.

  • :redirect_trailing_slash – On trailing /, redirect to the same path without the /. Defaults to false.

  • :known_methods – Array of http methods tested for 405s.



38
39
40
41
42
43
44
45
46
47
# File 'lib/http_router.rb', line 38

def initialize(*args, &blk)
  default_app, options     = args.first.is_a?(Hash) ? [nil, args.first] : [args.first, args[1]]
  @options = options
  @default_app             = default_app || options && options[:default_app] || proc{|env| ::Rack::Response.new("Not Found", 404, {'X-Cascade' => 'pass'}).finish }
  @ignore_trailing_slash   = options && options.key?(:ignore_trailing_slash) ? options[:ignore_trailing_slash] : true
  @redirect_trailing_slash = options && options.key?(:redirect_trailing_slash) ? options[:redirect_trailing_slash] : false
  @known_methods           = Set.new(options && options[:known_methods] || [])
  reset!
  instance_eval(&blk) if blk
end