module Roda::RodaPlugins::BeforeHook::ClassMethods

def def_roda_before

in order.
Build a _roda_before method that calls each _roda_before_* method
def def_roda_before
  meths = private_instance_methods.grep(/\A_roda_before_\d\d/).sort.join(';')
  class_eval("def _roda_before; #{meths} end", __FILE__, __LINE__)
  private :_roda_before
end

def include(*a)

have added a _roda_before_* method.
Rebuild the _roda_before method whenever a plugin might
def include(*a)
  res = super
  def_roda_before
  res
end

def rack_app_route_block(block)

Modify rack app route block to use before hook.
def rack_app_route_block(block)
  lambda do |r|
    _roda_before
    instance_exec(r, &block)
  end
end