Class: Rasti::Web::Controller

Inherits:
Object
  • Object
show all
Extended by:
Forwardable
Defined in:
lib/rasti/web/controller.rb

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(request, response, render) ⇒ Controller

Returns a new instance of Controller.



12
13
14
15
16
# File 'lib/rasti/web/controller.rb', line 12

def initialize(request, response, render)
  @request = request
  @response = response
  @render = render
end

Instance Attribute Details

#renderObject (readonly)

Returns the value of attribute render.



10
11
12
# File 'lib/rasti/web/controller.rb', line 10

def render
  @render
end

#requestObject (readonly)

Returns the value of attribute request.



10
11
12
# File 'lib/rasti/web/controller.rb', line 10

def request
  @request
end

#responseObject (readonly)

Returns the value of attribute response.



10
11
12
# File 'lib/rasti/web/controller.rb', line 10

def response
  @response
end

Class Method Details

.action(action_name) ⇒ Object Also known as: >>



19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
# File 'lib/rasti/web/controller.rb', line 19

def action(action_name)
  raise "Undefined action '#{action_name}' in #{name}" unless instance_methods.include? action_name.to_sym
  
  Endpoint.new do |req, res, render|
    controller = new req, res, render
    begin
      controller.public_send action_name
    rescue => ex
      if controller.respond_to? ex.class.name
        controller.public_send ex.class.name, ex
      else
        raise ex
      end
    end
  end
end

.rescue_from(exception_class, &block) ⇒ Object



38
39
40
41
42
# File 'lib/rasti/web/controller.rb', line 38

def rescue_from(exception_class, &block)
  define_method exception_class.name do |ex|
    instance_exec ex, &block
  end
end