1
0
Fork 0
mirror of https://github.com/middleman/middleman.git synced 2022-11-09 12:20:27 -05:00
middleman--middleman/lib/middleman/core_extensions/rack_map.rb

35 lines
864 B
Ruby
Raw Normal View History

module Middleman::CoreExtensions::RackMap
class << self
def registered(app)
app.extend ClassMethods
end
alias :included :registered
end
module ClassMethods
def map(path, &block)
@maps ||= []
@maps << [path, block]
end
def maps
@maps || []
end
# Creates a Rack::Builder instance with all the middleware set up and
# an instance of this class as end point.
def build(*args, &bk)
builder = ::Rack::Builder.new
builder.use ::Sinatra::ShowExceptions if show_exceptions?
builder.use ::Rack::CommonLogger if logging?
builder.use ::Rack::Head
middleware.each { |c,a,b| builder.use(c, *a, &b) }
maps.each { |p,b| builder.map(p, &b) }
app = self
builder.map "/" do
run app.new!(*args, &bk)
end
builder
end
end
end