Sha256: 111530eeee0f0a21d453d19b2e3b4c0ca5080175e10d5bfd5f85554a3f7dce64
Contents?: true
Size: 1.24 KB
Versions: 2
Compression:
Stored size: 1.24 KB
Contents
require 'thread' require 'rack/builder' require 'lotus/router' module Lotus class Container class Router < ::Lotus::Router def mount(app, options) app = app.new(path_prefix: options.fetch(:at)) if lotus_app?(app) super(app, options) end private def lotus_app?(app) app.ancestors.include? Lotus::Application end end attr_reader :routes def self.configure(options = {}, &blk) Mutex.new.synchronize do @@options = options @@configuration = blk end end def initialize Mutex.new.synchronize do assert_configuration_presence! prepare_middleware_stack! end end def call(env) @builder.call(env) end private def assert_configuration_presence! unless self.class.class_variable_defined?(:@@configuration) raise ArgumentError.new("#{ self.class } doesn't have any application mounted.") end end def prepare_middleware_stack! @builder = ::Rack::Builder.new @routes = Router.new(&@@configuration) if Lotus.environment.serve_static_assets? require 'lotus/static' @builder.use Lotus::Static end @builder.run @routes end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
lotusrb-0.6.1 | lib/lotus/container.rb |
lotusrb-0.6.0 | lib/lotus/container.rb |