3.71.0.txt

doc/release_notes/3.71.0.txt
Last Update: 2023-08-14 08:54:23 -0700

New Feature

  • A match_hook_args plugin has been added. This is similar to the existing match_hook plugin, but passes through the matchers and block arguments (values yielded to the match block). Example:

    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