stage-manager/server.rb

68 lines
1.5 KiB
Ruby

# frozen_string_literal: true
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').sort().each { |f| require f }
# Base Sinatra app
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, File.join(__dir__, '/public')
# Set up our view engine
set :views, File.join(settings.root, '/views')
# Initialize logging
logger = Logger.new($stdout)
logger.level = Logger::INFO
# Load helper functions
require_relative 'app/helpers'
helpers Helpers
## Map controllers
# Top-level routes controller
class IndexController < StageManager
map '/'
end
# Channel routes controller
class ChannelController < StageManager
map '/channel'
end
# Video routes controller
class VideoController < StageManager
map '/video'
end
# API v1 controller
class ApiV1Controller < StageManager
map '/api/v1'
end
end
# Load controllers
Dir.glob('./app/routes/*.rb').sort().each { |f| require f }