Class: Useless::Rack

Inherits:
Object
  • Object
show all
Defined in:
lib/useless/rack.rb,
lib/useless/rack/base.rb,
lib/useless/rack/base/files.rb,
lib/useless/rack/middleware/fs.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: Middleware Classes: Base

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

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

Returns a new instance of Rack.



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

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

Class Method Details

.fsObject



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

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

.mongoObject



19
20
21
# File 'lib/useless/rack.rb', line 19

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

Instance Method Details

#call(env) ⇒ Object



37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
# File 'lib/useless/rack.rb', line 37

def call(env)
  ::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::Authentication::QueryString
    use Middleware::Authentication::RequestHeader

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

#map(pair) ⇒ Object



32
33
34
35
# File 'lib/useless/rack.rb', line 32

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