class Zephyre::Controller

Attributes

request[R]

Public Class Methods

action(action_name) click to toggle source
# File lib/zephyre/controller.rb, line 56
def self.action(action_name)
        -> (env) { self.new(env).dispatch(action_name) }
end
new(env) click to toggle source
# File lib/zephyre/controller.rb, line 6
def initialize(env)
        @request ||= Rack::Request.new(env)
end

Public Instance Methods

controller_name() click to toggle source
# File lib/zephyre/controller.rb, line 41
def controller_name
        self.class.to_s.gsub(/Controller$/, "").to_snake_case
end
dispatch(action) click to toggle source
# File lib/zephyre/controller.rb, line 45
          def dispatch(action)
                  content = self.send(action)

                  if get_response
  get_response
else
  render(action)
  get_response
end
          end
get_response() click to toggle source
# File lib/zephyre/controller.rb, line 18
def get_response
        @response
end
params() click to toggle source
# File lib/zephyre/controller.rb, line 10
def params
        request.params
end
render(*args) click to toggle source
# File lib/zephyre/controller.rb, line 22
def render(*args)
        response(render_template(*args), 200, {"Content-Type" => "text/html"})
end
render_template(view_name, locals = {}) click to toggle source
# File lib/zephyre/controller.rb, line 26
def render_template(view_name, locals = {})
        filename = File.join("app", "views", controller_name, "#{view_name}.erb")

        # If we find a file, render it, otherwise just render whatever was passed as a string
        template = File.file?(filename) ? File.read(filename) : view_name.to_s

        vars = {}
        instance_variables.each do |var|
                key = var.to_s.gsub("@", "").to_sym
                vars[key] = instance_variable_get(var)
        end

        ERB.new(template).result(binding)
end
response(body, status=200, header={}) click to toggle source
# File lib/zephyre/controller.rb, line 14
def response(body, status=200, header={})
        @response = Rack::Response.new(body, status, header)
end