class Matrack::BaseController

Attributes

request[R]
response[R]
session[RW]

Public Class Methods

new(env) click to toggle source
# File lib/matrack/base_controller.rb, line 7
def initialize(env)
  @request = Rack::Request.new(env)
  @session = Session.new(env)
end

Public Instance Methods

authenticate(password) click to toggle source
# File lib/matrack/base_controller.rb, line 55
def authenticate(password)
  Matrack::DataManager.password_hash(password)
end
controller_name() click to toggle source
# File lib/matrack/base_controller.rb, line 51
def controller_name
  self.class.to_s.gsub(/Controller$/, "").to_snake_case
end
create_response(body, status = 200, headers = {}) click to toggle source
# File lib/matrack/base_controller.rb, line 16
def create_response(body, status = 200, headers = {})
  @response = Rack::Response.new body, status, headers
end
get_instance_vars() click to toggle source
# File lib/matrack/base_controller.rb, line 42
def get_instance_vars
  vars = {}
  instance_variables.each do |var|
    key = var.to_s.delete("@").to_sym
    vars[key] = instance_variable_get(var)
  end
  vars
end
invalid_route() click to toggle source
# File lib/matrack/base_controller.rb, line 36
def invalid_route
  template = Tilt::ERBTemplate.new(File.join(APP_PATH, "app", "views",
                                             "layout", "invalid.html.erb"))
  template.render(self)
end
params() click to toggle source
# File lib/matrack/base_controller.rb, line 12
def params
  request.params
end
redirect_to(address) click to toggle source
# File lib/matrack/base_controller.rb, line 59
def redirect_to(address)
  create_response([], 302, "location" => address)
end
render(*args) click to toggle source
# File lib/matrack/base_controller.rb, line 20
def render(*args)
  create_response(render_template(*args))
end
render_template(view_name, locals = {}) click to toggle source
# File lib/matrack/base_controller.rb, line 24
def render_template(view_name, locals = {})
  template = Tilt::ERBTemplate.new(File.join(APP_PATH, "app", "views",
                                   "layout", "application.html.erb"))
  title = view_name.to_s.tr("_", " ").capitalize
  view = "#{view_name}.html.erb"
  view_template = Tilt::ERBTemplate.new(File.join(APP_PATH, "app", "views",
                                                  controller_name, view))
  template.render(self, title: title) do
    view_template.render(self, locals.merge!(get_instance_vars))
  end
end