class Ramverk::Configuration
Project configuration.
Constants
- LOGGER_DEFAULT_FORMATTER
@private
Attributes
Mounted applications.
@return [Hash]
Eager loads all files in the root of the autoload_paths
directories, recursively.
Disabled by default in `development` and `test` environments.
@return [Boolean]
Autoloader object.
@return [Zeitwerk::Loader]
Paths to (re)load constants from. All paths should be relative to project root path.
@return [Array]
Reload constants automatically. This is only enabled in `development` by default.
Enabled by default in `development` environment.
@return [Boolean]
Project logger.
@return [Logger]
Params to be [FILTERED] out from logs.
@return [Array<String>]
Logger formatter.
@return [Proc]
Logger severity level.
@return [Symbol]
Public directory folder.
@return [String]
Project root path.
@return [Pathname]
Serve static files.
@return [Boolean]
Public Class Methods
@private rubocop:disable Metrics/AbcSize
# File lib/ramverk/configuration.rb, line 93 def initialize(env: Ramverk.env) @env = env @root = Pathname.new(Dir.pwd) @apps = {} @public_directory = "public" @serve_static_files = env == :development # Middleware @middleware = Middleware.new # Logging @logger = ::Logger.new(env == :test ? IO::NULL : $stdout) @logger_level = env == :production ? :info : :debug @logger_formatter = LOGGER_DEFAULT_FORMATTER @logger_filter_params = %w[password password_confirmation password_hash] # Autoloading @autoload_loader = Zeitwerk::Loader.new @autoload_paths = %w[] @autoload_eager_load = env != :development @autoload_reload = env == :development end
Public Instance Methods
@private
# File lib/ramverk/configuration.rb, line 154 def boot boot_logger boot_autoload boot_apps boot_static_file_server freeze end
Yield the block if the given environment matches the current.
@param env [Symbol] @yieldparam config [Ramverk::Configuration]
@example
Ramverk.configure do |config| config.environment :development do end end
# File lib/ramverk/configuration.rb, line 140 def environment(env) yield self if env == @env end
@private
Ramverk::Configuration::DynamicGroups#freeze
# File lib/ramverk/configuration.rb, line 164 def freeze apps.freeze middleware.freeze super end
Mount a Rack compatible at the given path prefix.
@param app [#call]
Application to mount.
@param at [String]
Path prefix to match.
@param as [Symbol]
App identifier.
@param host [Regexp]
Match the given host pattern.
# File lib/ramverk/configuration.rb, line 126 def mount(app, at:, as:, host: nil) @apps[as] = [app, Mustermann.new(at), host].freeze end
Set project root path.
@param value [String, Pathname]
@raise [Errno::ENOENT]
# File lib/ramverk/configuration.rb, line 149 def root=(value) @root = Pathname.new(value).realpath end
Private Instance Methods
@private
# File lib/ramverk/configuration.rb, line 207 def boot_apps apps.each_value do |(app, _pattern, _host)| app.boot if app.respond_to?(:boot) end end
@private rubocop:disable Metrics/AbcSize
# File lib/ramverk/configuration.rb, line 189 def boot_autoload return if !autoload_paths || autoload_paths.empty? autoload_paths.each { |path| autoload_loader.push_dir(root.join(path)) } if autoload_reload autoload_loader.enable_reloading require_relative "middleware/reloader" middleware.prepend Ramverk::Middleware::Reloader, autoload_loader end autoload_loader.setup Zeitwerk::Loader.eager_load_all if autoload_eager_load end
@private
# File lib/ramverk/configuration.rb, line 174 def boot_logger return unless logger logger.level = logger_level logger.formatter = logger_formatter logger.freeze require_relative "middleware/request_logger" middleware.prepend Ramverk::Middleware::RequestLogger, logger, logger_filter_params end
@private
# File lib/ramverk/configuration.rb, line 214 def boot_static_file_server return unless serve_static_files require_relative "middleware/static" middleware.prepend Ramverk::Middleware::Static, public_directory end