Sha256: d29027e2b1122f337268f866f8f4d48aa917a9fbb5f0f820845f81b1f31d133a
Contents?: true
Size: 1.64 KB
Versions: 1
Compression:
Stored size: 1.64 KB
Contents
module NYNY class App HTTP_VERBS = [:delete, :get, :head, :options, :patch, :post, :put, :trace] attr_reader :middleware_chain, :router def initialize app=nil @router = Router.new({ :routes => self.class.routes, :fallback => (app || lambda {|env| Response.new '', 404 }), :before_hooks => self.class.before_hooks, :after_hooks => self.class.after_hooks }) @middleware_chain = MiddlewareChain.new(self.class.middlewares, lambda {|env| _call(env)}) end def _call env router.call env end def call env middleware_chain.call env end #class methods class << self HTTP_VERBS.each do |method| define_method method do |str, &blk| (routes[method] ||= {})[RouteSignature.new(str)] = Proc.new &blk end end def middlewares; @middlewares ||= [] end def routes; @routes ||= {} end def before_hooks; @before_hooks ||= [] end def after_hooks; @after_hooks ||= [] end # move middleware chain and runner to core-ext def register *extensions extensions.each do |ext| extend ext ext.registered(self) if ext.respond_to?(:registered) end end def before &blk before_hooks << Proc.new(&blk) end def after &blk after_hooks << Proc.new(&blk) end def use middleware, *args, &block middlewares << [middleware, args, block] end def helpers *args args.each {|m| RequestScope.add_helper_module m } end end #class methods end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
nyny-2.0.0 | lib/nyny/app.rb |