Method: Mailman::Router#route
- Defined in:
- lib/mailman/router.rb
#route(message) ⇒ Object
Route a message. If the route block accepts arguments, it passes any captured params. Named params are available from the params helper. The message is available from the message helper.
38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 |
# File 'lib/mailman/router.rb', line 38 def route() @params.clear @message = result = nil if @bounce_block and .respond_to?(:bounced?) and .bounced? return instance_exec(&@bounce_block) end routes.each do |route| break if result = route.match!() end if result @params.merge!(result[:params]) if !result[:klass].nil? if result[:klass].is_a?(Class) # no instance method specified result[:klass].new.send(:receive, @message, @params) elsif result[:klass].kind_of?(String) # instance method specified klass, method = result[:klass].split('#') klass.camelize.constantize.new.send(method.to_sym, @message, @params) end elsif result[:block].arity > 0 instance_exec(*result[:args], &result[:block]) else instance_exec(&result[:block]) end elsif @default_block instance_exec(&@default_block) end end |