The match_hook_args plugin adds hooks that are called upon a successful match by any of the matchers. It is similar to the match_hook plugin, but it allows for passing the matchers and block arguments for each match method.
plugin :match_hook_args add_match_hook do |matchers, block_args| logger.debug("matchers: #{matchers.inspect}. #{block_args.inspect} yielded.") end # Term is an implicit matcher used for terminating matches, and # will be included in the array of matchers yielded to the match hook # if a terminating match is used. term = self.class::RodaRequest::TERM route do |r| r.root do # for a request for / # matchers: nil, block_args: nil end r.on 'a', ['b', 'c'], Integer do |segment, id| # for a request for /a/b/1 # matchers: ["a", ["b", "c"], Integer], block_args: ["b", 1] end r.get 'd' do # for a request for /d # matchers: ["d", term], block_args: [] end end
Classes and Modules
Public Class methods
configure(app)
[show source]
# File lib/roda/plugins/match_hook_args.rb 38 def self.configure(app) 39 app.opts[:match_hook_args] ||= [] 40 end