class Pup::BaseController

Attributes

request[R]

Public Class Methods

new(request) click to toggle source
# File lib/pup/controller/base_controller.rb, line 8
def initialize(request)
  @request ||= request
end

Public Instance Methods

get_response() click to toggle source
# File lib/pup/controller/base_controller.rb, line 12
def get_response
  @response
end
render(view_name, locals = {}) click to toggle source
# File lib/pup/controller/base_controller.rb, line 16
def render(view_name, locals = {})
  template = get_template(view_name)
  parameters = build_view_params(locals)
  response_body = Erubis::Eruby.new(template).result(parameters)
  make_response(response_body)
end

Private Instance Methods

build_view_params(locals) click to toggle source
# File lib/pup/controller/base_controller.rb, line 30
def build_view_params(locals)
  hash = {}
  vars = instance_variables
  vars.each { |name| hash[name] = instance_variable_get(name) }

  hash.merge(locals)
end
controller_name() click to toggle source
# File lib/pup/controller/base_controller.rb, line 50
def controller_name
  self.class.to_s.gsub("Controller", "").to_snakecase
end
get_template(view_name) click to toggle source
# File lib/pup/controller/base_controller.rb, line 23
def get_template(view_name)
  filename = File.join(
    APP_ROOT, "app", "views", controller_name, "#{view_name}.erb"
  )
  File.read(filename)
end
make_response(body, status = 200, headers = {}) click to toggle source
# File lib/pup/controller/base_controller.rb, line 38
def make_response(body, status = 200, headers = {})
  @response = Rack::Response.new(body, status, headers)
end
params() click to toggle source
# File lib/pup/controller/base_controller.rb, line 42
def params
  request.params.with_indifferent_access
end
redirect_to(location) click to toggle source
# File lib/pup/controller/base_controller.rb, line 46
def redirect_to(location)
  make_response([], 302, "Location" => location)
end