Class: Hemp::BaseController
Instance Attribute Summary collapse
-
#request ⇒ Object
readonly
Returns the value of attribute request.
-
#response ⇒ Object
readonly
Returns the value of attribute response.
Instance Method Summary collapse
- #get_instance_vars ⇒ Object
- #get_tilt_template(controller_folder, action) ⇒ Object
- #params ⇒ Object
- #pile_up_instance_vars(vars, instance_vars) ⇒ Object
- #redirect_to(location) ⇒ Object
- #render(action, instance_vars = get_instance_vars) ⇒ Object
- #set_response(body, status = 200, headers = {}) ⇒ Object
Instance Attribute Details
#request ⇒ Object (readonly)
Returns the value of attribute request.
9 10 11 |
# File 'lib/hemp/controller.rb', line 9 def request @request end |
#response ⇒ Object (readonly)
Returns the value of attribute response.
9 10 11 |
# File 'lib/hemp/controller.rb', line 9 def response @response end |
Instance Method Details
#get_instance_vars ⇒ Object
26 27 28 29 30 31 |
# File 'lib/hemp/controller.rb', line 26 def get_instance_vars vars = instance_variables instance_vars = {} OpenStruct.new(pile_up_instance_vars(vars, instance_vars)) end |
#get_tilt_template(controller_folder, action) ⇒ Object
18 19 20 21 22 23 24 |
# File 'lib/hemp/controller.rb', line 18 def get_tilt_template(controller_folder, action) template_file = File.join( RACK_ROOT, "app", "views", controller_folder, "#{action}.html.erb" ) Tilt.new template_file end |
#params ⇒ Object
50 51 52 |
# File 'lib/hemp/controller.rb', line 50 def params @params ||= OpenStruct.new(request.params) end |
#pile_up_instance_vars(vars, instance_vars) ⇒ Object
33 34 35 36 37 38 39 40 |
# File 'lib/hemp/controller.rb', line 33 def pile_up_instance_vars(vars, instance_vars) vars.each do |var| trimmed_var = var[1..-1] instance_vars[trimmed_var] = instance_variable_get "@#{trimmed_var}" end instance_vars end |
#redirect_to(location) ⇒ Object
42 43 44 |
# File 'lib/hemp/controller.rb', line 42 def redirect_to(location) set_response [], 302, "Location" => location end |
#render(action, instance_vars = get_instance_vars) ⇒ Object
11 12 13 14 15 16 |
# File 'lib/hemp/controller.rb', line 11 def render(action, instance_vars = get_instance_vars) controller_folder = self.class.name.pathize.split("_").first tilt_template = get_tilt_template(controller_folder, action) instance_vars.delete_field :request set_response(tilt_template.render(instance_vars)) end |
#set_response(body, status = 200, headers = {}) ⇒ Object
46 47 48 |
# File 'lib/hemp/controller.rb', line 46 def set_response(body, status = 200, headers = {}) @response = Rack::Response.new(body, status, headers) end |