lib/yodatra/boot.rb
require 'sinatra/activerecord'
module Yodatra
class Base < Sinatra::Base
set(:booted, false)
set(:booting, true)
set(:models_directory, 'app/models')
set(:controllers_directory, 'app/controllers')
set(:envs_directory, 'config/environments')
set(:config_directory, 'config')
end
module Boot
def booting= done
super
register Yodatra::Boot
end
def self.registered app
raise "Check it out O'man! You're trying to boot the app [#{app}] which is already booted!" if app.booted
if app.booting
# ActiveRecord
app.register Sinatra::ActiveRecordExtension
app_file = "#{app.config_directory}/application.rb"
require File.expand_path(app_file) if File.exist? app_file
env_file = "#{app.envs_directory}/#{app.environment}.rb"
require File.expand_path(env_file) if File.exist? env_file
%w(models_directory controllers_directory).each do |to_load|
Dir["#{app.send(to_load)}/**/*.rb"].sort.each do |file_path|
require File.expand_path(file_path)
end
end
app.set :booting, false
app.set :booted, true
end
end
end
end