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