require 'logger' require 'sequel' require 'sqlite3' require 'sinatra/base' require_relative 'app/config.rb' # Load configuration file $conf = Config.new(File.join(__dir__, 'data/config.yaml')) # 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 require_relative 'app/models/channel.rb' require_relative 'app/models/video.rb' 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 :sessions enable :static set :public_folder, __dir__ + '/public' 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 end Dir.glob('./app/routes/*.rb').each { |f| require f }