Repository URL to install this package:
Version:
4.0.1.pre.1 ▾
|
# frozen_string_literal: true
require 'sequel'
require 'sinatra/base'
require_relative 'auth_helpers'
require_relative 'banner'
require_relative 'basic_passwordless_auth'
require_relative 'faculty/flash'
require_relative 'faculty/version'
require_relative 'form_validator'
require_relative 'http_status'
require_relative 'param_validator'
# Top-level module documentation comment goes here...
module Sinatra
module Faculty
# Functions for use in configure block
module Functions
def allow_string_web_library_version_in_test?
test? && ENV.fetch('ALLOW_STRING_WEB_LIBRARY_VERSION', '').to_s.match?(/^[1ty]/i)
end
def initialise_db(config = {})
Sequel.connect(settings.db.merge(config))
end
def only_versioned_web_library_in_production!
return if development? || web_library_version_is_numeric? || allow_string_web_library_version_in_test?
raise 'Do not use branch-based web library in production!'
end
def update_db_config_from_env
params = %i[adapter host port database user password search_path]
env_settings = params.map { |p| [p, ENV["DB_#{p.upcase}"]] }.to_h.compact
set :db, settings.respond_to?(:db) ? settings.db.merge(env_settings) : env_settings
end
def web_library_version_is_numeric?
settings.web_library[:version].to_s =~ /^[0-9.]+$/
end
end
# General Helpers
module Helpers
def current_url?(path)
path == request.path_info
end
def full_url(relative_url)
request.base_url + rel(relative_url)
end
def path_with_web_root
rel request.path_info
end
def rel(relative_url)
web_root + relative_url
end
def web_library(resource)
library_root = request.host == 'localhost' ? '/web-library' : settings.web_library[:root]
"#{library_root}/#{settings.web_library[:version]}/#{resource}"
end
def web_root
path = settings.path
path.end_with?('/') ? path[0..-2] : path
end
end
end
helpers Faculty::Helpers
register Faculty::Functions
end