require 'logger' require 'sequel' require 'sqlite3' require 'sinatra/base' require 'sinatra/json' require 'rack/protection' # Load the Sequel timestamps plugin Sequel::Model.plugin :timestamps # Initialize Sequel gem for database actions DB = Sequel.connect(adapter: $conf.get('database.adapter'), database: $conf.get('database.database')) # Load models Dir.glob('./app/models/*.rb').each { |f| require f } class StageManager < Sinatra::Base @@my_app = {} def self.new(*) self < StageManager ? super : Rack::URLMap.new(@@my_app) end def self.map(url) @@my_app[url] = self end # Enable and configure sessions enable :sessions # Enable rack protection middleware use Rack::Protection # Set up static file serving enable :static set :public_folder, __dir__ + '/public' # Set up our view engine set :views, settings.root + '/views' # Initialize logging logger = Logger.new(STDOUT) logger.level = Logger::INFO # Load helper functions require_relative 'app/helpers.rb' helpers Helpers # Map controllers class IndexController < StageManager map '/' end class ChannelController < StageManager map '/channel' end class VideoController < StageManager map '/video' end # API controllers class ApiV1Controller < StageManager map '/api/v1' end end # Load controllers Dir.glob('./app/routes/*.rb').each { |f| require f }