class ASeriesOfTubes::TubeController

Attributes

params[R]
request[R]
response[R]

Public Class Methods

new(request, response, params = {}) click to toggle source
# File lib/a_series_of_tubes/tube_controller.rb, line 7
def initialize request, response, params = {}
  @request = request
  @response = response
  @params = params.merge request.params
end

Public Instance Methods

flash() click to toggle source
# File lib/a_series_of_tubes/tube_controller.rb, line 47
def flash
  @flash ||= self.session.flash
end
invoke_action(action) click to toggle source
# File lib/a_series_of_tubes/tube_controller.rb, line 13
def invoke_action action
  self.send action
  render action unless @rendered
end
redirect_to(url) click to toggle source
# File lib/a_series_of_tubes/tube_controller.rb, line 18
def redirect_to url
  prevent_double_render
  set_rendered

  self.response.header['location'] = url
  self.response.status = 302
  self.session.store_session self.response
end
render(template_name) click to toggle source
# File lib/a_series_of_tubes/tube_controller.rb, line 27
def render template_name
  controller_name = self.class.to_s.underscore
  filename = "#{APP_DIRECTORY}/views/#{controller_name}/#{template_name}.html.erb"
  render_content ERB.new(File.read(filename)).result(binding), 'text/html'
  self.session.store_session self.response
end
render_content(content, content_type) click to toggle source
# File lib/a_series_of_tubes/tube_controller.rb, line 34
def render_content content, content_type
  prevent_double_render
  set_rendered

  self.response['Content-Type'] = content_type
  self.response.write content
  self.session.store_session self.response
end
session() click to toggle source
# File lib/a_series_of_tubes/tube_controller.rb, line 43
def session
  @session ||= TubeState::Session.new self.request
end

Private Instance Methods

prevent_double_render() click to toggle source
# File lib/a_series_of_tubes/tube_controller.rb, line 57
def prevent_double_render
  raise ASeriesOfTubes::DoubleRenderError if @rendered
end
set_rendered() click to toggle source
# File lib/a_series_of_tubes/tube_controller.rb, line 61
def set_rendered
  @rendered = true
end