Sha256: 2b0238f18a9b65ed78d17e0c39c3076d173ce1bbbb28d2b56ef4ab0a038e89cb
Contents?: true
Size: 1.69 KB
Versions: 3
Compression:
Stored size: 1.69 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 << Route.new(method, str, &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, &block if block_given? args << Module.new(&block) end args.each {|m| RequestScope.add_helper_module m } end end #class methods end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
nyny-2.2.1 | lib/nyny/app.rb |
nyny-2.1.1 | lib/nyny/app.rb |
nyny-2.1.0 | lib/nyny/app.rb |