Module: Roda::RodaPlugins::Hooks
- Defined in:
- lib/roda/plugins/hooks.rb
Overview
The hooks plugin adds before and after hooks to the request cycle.
plugin :hooks
before do
request.redirect('/login') unless logged_in?
@time = Time.now
end
after do |res|
logger.notice("Took #{Time.now - @time} seconds")
end
Note that in general, before hooks are not needed, since you can just run code at the top of the route block:
route do |r|
r.redirect('/login') unless logged_in?
# ...
end
Note that the after hook is called with the rack response array of status, headers, and body. If it wants to change the response, it must mutate this argument, calling response.status=
inside an after block will not affect the returned status.
However, this code makes it easier to write after hooks, as well as handle cases where before hooks are added after the route block.
Defined Under Namespace
Modules: ClassMethods, InstanceMethods
Class Method Summary collapse
Class Method Details
.configure(app) ⇒ Object
32 33 34 35 36 37 |
# File 'lib/roda/plugins/hooks.rb', line 32 def self.configure(app) @app.instance_exec do @after ||= nil @before ||= nil end end |