Module: Pancake::Mixins::RequestHelper

Included in:
Stacks::Short::Controller
Defined in:
lib/pancake/mixins/request_helper.rb

Overview

Some helpers for requests that come in handy for applications that are part of stacks

Constant Summary collapse

VARS_KEY =
'pancake.request.vars'

Instance Method Summary collapse

Instance Method Details

#base_url(opts = {}) ⇒ Object

Generate the base url for the router that got you to this point.

end

@see Usher
@see Pancake::Router.base_url_for
@see Pancake::Router#base_url
@api public
@author Daniel Neighman

Examples:

class MyApp
  router do |r|
    r.mount(SomeApp, "/some_app/:version")
  end

include Pancake::RequestHelper
def call(env)
  @env = env
  base_url(:version => "1.0" #=> "/some_app/1.0
end


70
71
72
# File 'lib/pancake/mixins/request_helper.rb', line 70

def base_url(opts={})
  configuration.router.base_url(opts)
end

#configurationObject

Get the configuration for this request. This will be updated as the request makes its way through the stacks



22
23
24
# File 'lib/pancake/mixins/request_helper.rb', line 22

def configuration
  request.env[Pancake::Router::CONFIGURATION_KEY]
end

#envObject

An accessor for the rack environment variable



104
105
106
# File 'lib/pancake/mixins/request_helper.rb', line 104

def env
  @env ||= {}
end

#env=(env) ⇒ Object

A setter for the rack environment



98
99
100
# File 'lib/pancake/mixins/request_helper.rb', line 98

def env=(env)
  @env = env
end

#loggerObject

Provides access to the logger object in rack.logger

Author:

  • Daniel Neighman



125
126
127
# File 'lib/pancake/mixins/request_helper.rb', line 125

def logger
  env[Pancake::Constants::ENV_LOGGER_KEY]
end

#requestObject

A handy request method that gets hold of the current request object for the current rack request. Any including class must provide an env method that exposes the rack request environment

See Also:

  • Rack::Request

Author:

  • Daniel Neighman



116
117
118
# File 'lib/pancake/mixins/request_helper.rb', line 116

def request
  @request ||= Rack::Request.new(env)
end

#url(name, opts = {}) ⇒ Object

Generate a url for the current stacks router.

Examples:

class MyApp
  router do |r|
    r.add("/foo").name(:foo)
  end

  include Pancake::RequestHelper
  # snip
  def call(env)
    @env = env
    url(:foo) # => "/foo"
  end
end

See Also:

Author:

  • Daniel Neighman



46
47
48
# File 'lib/pancake/mixins/request_helper.rb', line 46

def url(name, opts = {})
  configuration.router.url(name, opts)
end

#url_for(app_name, name_or_opts, opts = {}) ⇒ Object

Generate a url for any registered configuration with a router

:some_app)

url_for(:some_app, :my_named_route)

# An application with no name specified
url_for(MyApp, :my_named_route)

Examples:

# an application declared with MyApp.stackup(:app_name =>

See Also:

Author:

  • Daniel Neighman



88
89
90
91
92
93
94
# File 'lib/pancake/mixins/request_helper.rb', line 88

def url_for(app_name, name_or_opts, opts = {})
  if konfig = Pancake.configuration.configs[app_name]
    konfig.router.generate(name_or_opts, opts)
  else
    raise Pancake::Errors::UnknownConfiguration
  end
end

#varsObject Also known as: v

A data area that allows you to carry data accross middlewares, controller / views etc. Stores the data in session for the length of the request.

Examples:

vars[:user] = @user
v[:user] == vault[:user]
# This is now stored in the environment and is available later


15
16
17
18
# File 'lib/pancake/mixins/request_helper.rb', line 15

def vars
  env[VARS_KEY] ||= Hashie::Mash.new
  env[VARS_KEY]
end