class Racket::Utils::Application::RegistryBuilder
Class for easily building a Racket::Registry.
Attributes
registry[R]
Public Class Methods
new(settings = {})
click to toggle source
# File lib/racket/utils/application/registry_builder.rb, line 30 def initialize(settings = {}) @settings = settings @registry = Racket::Registry.singleton_map(service_map) end
static_server(static_dir, logger)
click to toggle source
Sets up a static server with the specified directory and logger.
@param [Pathname|nil] static_dir @param [Logger] logger @return [Proc|nil]
# File lib/racket/utils/application/registry_builder.rb, line 40 def self.static_server(static_dir, logger) unless static_dir logger.inform_dev('Static server disabled.') return nil end logger.inform_dev("Setting up static server to serve files from #{static_dir}.") handler = Rack::File.new(static_dir) ->(env) { handler.call(env) } end
Private Instance Methods
controller_context()
click to toggle source
# File lib/racket/utils/application/registry_builder.rb, line 52 def controller_context lambda do |reg| Module.new do define_singleton_method(:application_settings) { reg.application_settings } define_singleton_method(:helper_cache) { reg.helper_cache } define_singleton_method(:logger) { reg.application_logger } define_singleton_method(:get_route) do |klass, action, params| reg.router.get_route(klass, action, params) end define_singleton_method(:utils) { reg.utils } define_singleton_method(:view_manager) { reg.view_manager } end end end
service_map()
click to toggle source
# File lib/racket/utils/application/registry_builder.rb, line 67 def service_map { application_settings: Racket::Settings::Application.service(@settings), controller_context: controller_context, static_server: static_server, utils: Racket::Utils::ToolBelt.service(root_dir: @settings.fetch(:root_dir, Dir.pwd)) }.merge!(StatelessServices.services) end
static_server()
click to toggle source
# File lib/racket/utils/application/registry_builder.rb, line 76 def static_server klass = self.class lambda do |reg| klass.static_server( Racket::Utils::FileSystem.dir_or_nil(reg.application_settings.public_dir), reg.application_logger ) end end