travis-web/lib/travis/web/app.rb
2012-10-08 13:41:35 +02:00

44 lines
1.1 KiB
Ruby

require 'rack'
require 'rack/protection/path_traversal'
module Travis::Web
class App
ASSET_DIRS = %r(/(styles|scripts)/)
autoload :Api, 'travis/web/app/api'
autoload :Assets, 'travis/web/app/assets'
autoload :Config, 'travis/web/app/config'
autoload :Files, 'travis/web/app/files'
autoload :Helpers, 'travis/web/app/helpers'
autoload :Filter, 'travis/web/app/filter'
autoload :Terminal, 'travis/web/app/terminal'
Rack.autoload :SSL, 'rack/ssl'
Rack.autoload :Deflater, 'rack/deflater'
include Terminal
attr_accessor :app
def initialize
config = Config.new
announce(config)
@app = Rack::Builder.app do
use Rack::SSL if config.production?
use Rack::Protection::PathTraversal
use Travis::Web::App::Api, config if config.run_api?
use Rack::Deflater if config.deflate?
use Travis::Web::App::Assets, config
use Travis::Web::App::Filter, config
run Travis::Web::App::Files.new
end
end
def call(env)
app.call(env)
end
end
end