Class: Rollerskates::BaseController

Inherits:
Object
  • Object
show all
Defined in:
lib/rollerskates/base_controller.rb

Instance Method Summary collapse

Constructor Details

#initialize(request) ⇒ BaseController

Returns a new instance of BaseController.



6
7
8
# File 'lib/rollerskates/base_controller.rb', line 6

def initialize(request)
  @request ||= request
end

Instance Method Details

#controller_nameObject



48
49
50
# File 'lib/rollerskates/base_controller.rb', line 48

def controller_name
  self.class.to_s.gsub(/Controller$/, "").snakize
end

#finish(method_name, _status = nil) ⇒ Object



43
44
45
46
# File 'lib/rollerskates/base_controller.rb', line 43

def finish(method_name, _status = nil)
  render(method_name, {}) unless get_response
  get_response
end

#get_responseObject



26
27
28
# File 'lib/rollerskates/base_controller.rb', line 26

def get_response
  @response
end

#headersObject



10
11
12
# File 'lib/rollerskates/base_controller.rb', line 10

def headers
  { "Content-type" => "text/html" }
end

#paramsObject



22
23
24
# File 'lib/rollerskates/base_controller.rb', line 22

def params
  @request.params
end

#redirect_to(path, status) ⇒ Object



18
19
20
# File 'lib/rollerskates/base_controller.rb', line 18

def redirect_to(path, status)
  response([], status[:status], "Location" => path)
end

#render(*args) ⇒ Object



30
31
32
# File 'lib/rollerskates/base_controller.rb', line 30

def render(*args)
  response(render_template(*args))
end

#render_template(view_name, _locals = {}) ⇒ Object



34
35
36
37
38
39
40
41
# File 'lib/rollerskates/base_controller.rb', line 34

def render_template(view_name, _locals = {})
  views_folder = [APP_ROOT, "app", "views"].join("/")
  file_name = File.join(views_folder, controller_name, "#{view_name}.erb")
  layout_name = File.join(views_folder, "layouts", "application.erb")
  layout = Tilt.new(layout_name)
  template = Tilt.new(file_name)
  layout.render(self) { template.render(self) }
end

#response(body = [], status = 200, header = headers) ⇒ Object



14
15
16
# File 'lib/rollerskates/base_controller.rb', line 14

def response(body = [], status = 200, header = headers)
  @response = Rack::Response.new(body, status, header)
end