class Hanami::Events::CloudPubsub::Middleware::Stack
Middleware
which is invoked when a message is received
Attributes
entries[R]
Public Class Methods
new(*entries) { |self| ... }
click to toggle source
# File lib/hanami/events/cloud_pubsub/middleware/stack.rb, line 21 def initialize(*entries) entries.each(&method(:ensure_callable)) @entries = entries yield self if block_given? end
Public Instance Methods
<<(middleware)
click to toggle source
# File lib/hanami/events/cloud_pubsub/middleware/stack.rb, line 27 def <<(middleware) ensure_callable(middleware) entries << middleware self end
invoke(*args, **kwargs) { |*args, **kwargs, **opts| ... }
click to toggle source
# File lib/hanami/events/cloud_pubsub/middleware/stack.rb, line 43 def invoke(*args, **kwargs) stack = entries.dup traverse_stack = proc do |**opts| if stack.empty? yield(*args, **kwargs, **opts) else stack.shift.call(*args, **kwargs, **opts, &traverse_stack) end end traverse_stack.call end
prepend(middleware)
click to toggle source
# File lib/hanami/events/cloud_pubsub/middleware/stack.rb, line 33 def prepend(middleware) ensure_callable(middleware) entries.insert 0, middleware self end
shift()
click to toggle source
# File lib/hanami/events/cloud_pubsub/middleware/stack.rb, line 39 def shift @entries.shift end
Private Instance Methods
ensure_callable(middleware)
click to toggle source
# File lib/hanami/events/cloud_pubsub/middleware/stack.rb, line 59 def ensure_callable(middleware) raise InvalidMiddlewareError, middleware unless middleware.respond_to?(:call) end