Refactored app to more explicitly require gems/modules that are used per-file
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful

This commit is contained in:
Gregory Ballantine
2025-08-12 14:12:32 -04:00
parent dd8e419e52
commit 1f0c481105
12 changed files with 39 additions and 31 deletions

View File

@ -4,20 +4,31 @@ require 'sinatra/base'
require 'sequel'
require 'sqlite3'
require_relative 'appinfo'
# 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 'models/init'
# Load in routes (must happen after Sequel is loaded!)
require_relative 'routes/api1'
require_relative 'routes/benchmark'
require_relative 'routes/hardware'
require_relative 'routes/index'
require_relative 'routes/reports'
require_relative 'routes/result'
require_relative 'routes/test'
# Load the routes
require_relative 'routes/init'
# GameData - main app that gets launched
# - inherits from Sinatra::Base to instantiate the server
# - sets up some base app configuration
# - registers route classes with the base app
class GameData < Sinatra::Base
class GameData < Server
enable :sessions
# Set up static file serving
enable :static
set :public_folder, File.join(__dir__, '/../public')
use IndexRoutes
use HardwareRoutes

View File

@ -1,5 +1,7 @@
# frozen_string_literal: true
require_relative 'appinfo'
# Helpers - view helper functions
module Helpers

View File

@ -1,6 +0,0 @@
# frozen_string_literal: true
require_relative 'hardware'
require_relative 'benchmark'
require_relative 'result'
require_relative 'test'

View File

@ -1,6 +1,11 @@
# frozen_string_literal: true
require 'sinatra/json'
require_relative '../server'
require_relative '../models/benchmark'
require_relative '../models/test'
require_relative '../models/result'
# /api/v1 routes
class APIv1Routes < Server

View File

@ -1,6 +1,7 @@
# frozen_string_literal: true
require_relative '../server'
require_relative '../models/benchmark'
# /benchmark routes
class BenchmarkRoutes < Server

View File

@ -1,6 +1,8 @@
# frozen_string_literal: true
require_relative '../server'
require_relative '../models/hardware'
require_relative '../models/benchmark'
# /hardware routes
class HardwareRoutes < Server

View File

@ -1,6 +1,7 @@
# frozen_string_literal: true
require_relative '../server'
require_relative '../models/test'
# / (top-level) routes
class IndexRoutes < Server

View File

@ -1,10 +0,0 @@
# frozen_string_literal: true
require_relative 'index'
require_relative 'hardware'
require_relative 'benchmark'
require_relative 'reports'
require_relative 'result'
require_relative 'test'
require_relative 'api1'

View File

@ -1,6 +1,11 @@
# frozen_string_literal: true
require 'sinatra/json'
require_relative '../server'
require_relative '../models/benchmark'
require_relative '../models/result'
require_relative '../models/test'
# /reports routes
class ReportsRoutes < Server

View File

@ -1,6 +1,7 @@
# frozen_string_literal: true
require_relative '../server'
require_relative '../models/result'
# /result routes
class ResultRoutes < Server

View File

@ -1,6 +1,9 @@
# frozen_string_literal: true
require_relative '../server'
require_relative '../models/benchmark'
require_relative '../models/hardware'
require_relative '../models/test'
# /test routes
class TestRoutes < Server

View File

@ -1,17 +1,10 @@
# frozen_string_literal: true
require 'sinatra/base'
require 'sinatra/json'
# Base app
# Server - base modular Sinatra app class
class Server < Sinatra::Base
enable :sessions
# Set up static file serving
enable :static
set :public_folder, File.join(__dir__, '/../public')
# Register view helpers
require_relative 'helpers'
helpers Helpers