Module: Olelo::Routing

Included in:
Application
Defined in:
lib/olelo/routing.rb

Defined Under Namespace

Modules: ClassMethods Classes: Router

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#envObject (readonly)

Returns the value of attribute env.



7
8
9
# File 'lib/olelo/routing.rb', line 7

def env
  @env
end

#original_paramsObject (readonly)

Returns the value of attribute original_params.



7
8
9
# File 'lib/olelo/routing.rb', line 7

def original_params
  @original_params
end

#paramsObject (readonly)

Returns the value of attribute params.



7
8
9
# File 'lib/olelo/routing.rb', line 7

def params
  @params
end

#requestObject (readonly)

Returns the value of attribute request.



7
8
9
# File 'lib/olelo/routing.rb', line 7

def request
  @request
end

#responseObject (readonly)

Returns the value of attribute response.



7
8
9
# File 'lib/olelo/routing.rb', line 7

def response
  @response
end

Class Method Details

.included(base) ⇒ Object



3
4
5
# File 'lib/olelo/routing.rb', line 3

def self.included(base)
  base.extend(ClassMethods)
end

Instance Method Details

#call(env) ⇒ Array

Process rack request

This method duplicates the object and calls #call! on it.

Parameters:

  • env (Hash)

    Rack environment

Returns:

  • (Array)

    Rack return value

See Also:



17
18
19
# File 'lib/olelo/routing.rb', line 17

def call(env)
  dup.call!(env)
end

#call!(env) ⇒ Array

Process rack request

Parameters:

  • env (Hash)

    Rack environment

Returns:

  • (Array)

    Rack return value



26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
# File 'lib/olelo/routing.rb', line 26

def call!(env)
  @env      = env
  @request  = Rack::Request.new(env)
  @response = Rack::Response.new
  @params = @original_params = @request.params.with_indifferent_access
  @original_params.freeze

  catch(:forward) do
    perform!
    status, header, body = response.finish
    return [status, header, request.head? ? [] : body]
  end

  @app ? @app.call(env) : error!(NotFound.new(@request.path_info))
end

#forwardvoid

This method returns an undefined value.

Forward to next application on the rack stack



77
78
79
# File 'lib/olelo/routing.rb', line 77

def forward
  throw :forward
end

#halt(*response) ⇒ void

This method returns an undefined value.

Halt routing with response

Possible responses:

* String or Object with #each
* Symbol
* [Symbol, String or Object with #each]

Parameters:



52
53
54
# File 'lib/olelo/routing.rb', line 52

def halt(*response)
  throw :halt, response.length == 1 ? response.first : response
end

#passvoid

This method returns an undefined value.

Pass to next matching route



69
70
71
# File 'lib/olelo/routing.rb', line 69

def pass
  throw :pass
end

#redirect(uri) ⇒ void

This method returns an undefined value.

Redirect to uri

Parameters:

  • uri

    Target uri



61
62
63
# File 'lib/olelo/routing.rb', line 61

def redirect(uri)
  throw :redirect, uri
end