Class: Nephos::Controller
- Inherits:
-
Object
- Object
- Nephos::Controller
- Defined in:
- lib/nephos-server/controller.rb
Overview
This class must be inherited by the other Controllers. It contains a constructor (you should not rewrite it) It contains some helpers too, like an access to the environment, and the parameters.
Direct Known Subclasses
Constant Summary collapse
- @@before_action =
{:'*' => []}
- @@after_action =
{:'*' => []}
Instance Attribute Summary collapse
-
#callpath ⇒ Object
readonly
Returns the value of attribute callpath.
-
#cookies ⇒ Object
readonly
Returns the value of attribute cookies.
-
#params ⇒ Object
readonly
Returns the value of attribute params.
-
#req ⇒ Object
readonly
Returns the value of attribute req.
Class Method Summary collapse
-
.after_action(method, opt = nil) ⇒ Object
see #self#self.before_action.
- .before_action(method, opt = nil) ⇒ Object
- .parse_action_opts(opt) ⇒ Object
Instance Method Summary collapse
-
#execute_after_action(call) ⇒ Object
see #self#self.execute_before_action.
-
#execute_before_action(call) ⇒ Object
It calls every registred hooks added to the @before_action list, including ‘*’.
-
#initialize(req, callpath) ⇒ Controller
constructor
A new instance of Controller.
Constructor Details
#initialize(req, callpath) ⇒ Controller
Returns a new instance of Controller.
13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
# File 'lib/nephos-server/controller.rb', line 13 def initialize req, callpath raise ArgumentError, "req must be a Rack::Request" unless req.is_a? Rack::Request raise ArgumentError, "call must be a Hash" unless callpath.is_a? Hash @req= req @callpath= callpath @params= req.params rescue {} params = @req.path.split("/") params.shift @params.merge! Hash[callpath[:params].zip(params)] @params.select!{|k,v| not k.to_s.empty?} @params = Params.new(@params) = Params.new(@req.) end |
Instance Attribute Details
#callpath ⇒ Object (readonly)
Returns the value of attribute callpath.
9 10 11 |
# File 'lib/nephos-server/controller.rb', line 9 def callpath @callpath end |
#cookies ⇒ Object (readonly)
Returns the value of attribute cookies.
9 10 11 |
# File 'lib/nephos-server/controller.rb', line 9 def end |
#params ⇒ Object (readonly)
Returns the value of attribute params.
9 10 11 |
# File 'lib/nephos-server/controller.rb', line 9 def params @params end |
#req ⇒ Object (readonly)
Returns the value of attribute req.
9 10 11 |
# File 'lib/nephos-server/controller.rb', line 9 def req @req end |
Class Method Details
.after_action(method, opt = nil) ⇒ Object
see Nephos::Controller#self#self.before_action
62 63 64 65 66 67 |
# File 'lib/nephos-server/controller.rb', line 62 def self.after_action(method, opt=nil) parse_action_opts(opt) do |call| @@after_action[call] ||= [] @@after_action[call] << method.to_sym end end |
.before_action(method, opt = nil) ⇒ Object
54 55 56 57 58 59 |
# File 'lib/nephos-server/controller.rb', line 54 def self.before_action(method, opt=nil) parse_action_opts(opt) do |call| @@before_action[call] ||= [] @@before_action[call] << method.to_sym end end |
.parse_action_opts(opt) ⇒ Object
33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 |
# File 'lib/nephos-server/controller.rb', line 33 def self.parse_action_opts(opt) if opt.nil? if block_given? then yield :'*' else return [:'*'] end elsif opt.is_a? Hash only = Array(opt[:only]) if block_given? then only.each{|e| yield e} else return only end except = opt[:except] raise "No implemented yet (except)" if except # parse :only and :except elsif opt.is_a? String or opt.is_a? Symbol if block_given? then yield opt else return [opt] end else raise ArgumentError, "Invalid opt" end end |
Instance Method Details
#execute_after_action(call) ⇒ Object
see Nephos::Controller#self#self.execute_before_action
82 83 84 85 86 87 88 89 90 |
# File 'lib/nephos-server/controller.rb', line 82 def execute_after_action(call) call = call.to_sym methods = [] methods += Array(@@after_action[call]) methods += @@after_action[:'*'] methods.each do |method| self.send(method) end end |
#execute_before_action(call) ⇒ Object
It calls every registred hooks added to the @before_action list, including ‘*’
71 72 73 74 75 76 77 78 79 |
# File 'lib/nephos-server/controller.rb', line 71 def execute_before_action(call) call = call.to_sym methods = [] methods += Array(@@before_action[call]) methods += @@before_action[:'*'] methods.each do |method| self.send(method) end end |