Class: Useless::Rack

Inherits:
Object
  • Object
show all
Defined in:
lib/useless/rack.rb,
lib/useless/rack/doc.rb,
lib/useless/rack/base.rb,
lib/useless/rack/base/doc.rb,
lib/useless/rack/base/files.rb,
lib/useless/rack/middleware/fs.rb,
lib/useless/rack/middleware/doc.rb,
lib/useless/rack/middleware/mongo.rb,
lib/useless/rack/middleware/assets.rb,
lib/useless/rack/middleware/exceptions.rb,
lib/useless/rack/middleware/authentication/access_token.rb,
lib/useless/rack/middleware/authentication/query_string.rb,
lib/useless/rack/middleware/authentication/request_header.rb

Defined Under Namespace

Modules: Doc, Middleware Classes: Base

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(map = nil, &block) ⇒ Rack

Returns a new instance of Rack.



30
31
32
33
# File 'lib/useless/rack.rb', line 30

def initialize(map = nil, &block)
  @map = map || {}
  instance_eval &block if block_given?
end

Class Method Details

.fsObject



26
27
28
# File 'lib/useless/rack.rb', line 26

def self.fs
  @fs ||= Useless::FS.new(mongo)
end

.mongoObject



22
23
24
# File 'lib/useless/rack.rb', line 22

def self.mongo
  @mongo ||= Useless::Mongo.for_env
end

Instance Method Details

#call(env) ⇒ Object



40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
# File 'lib/useless/rack.rb', line 40

def call(env)
  map = @map

  ::Rack::Builder.app do
    use Middleware::Exceptions
    use Low::Rack::RequestId
    use Low::Rack::RackErrors
    use Low::Rack::LogLevel
    use Low::Rack::RequestLogger, key: 'useless.logger'
    use ::Rack::CommonLogger
    use Middleware::Assets
    use Middleware::Mongo
    use Middleware::FS
    use Middleware::Doc
    use Middleware::Authentication::QueryString
    use Middleware::Authentication::RequestHeader

    run Low::Rack::SubdomainMap.new(Base.new, map)
  end.call(env)
end

#map(pair) ⇒ Object



35
36
37
38
# File 'lib/useless/rack.rb', line 35

def map(pair)
  subdomain, app = pair.first
  @map[subdomain.to_s] = app.respond_to?(:new) ? app.new : app
end