class Dandy::App
Attributes
routes[R]
Public Class Methods
new(container = Hypo::Container.new)
click to toggle source
# File lib/dandy/app.rb, line 20 def initialize(container = Hypo::Container.new) @container = container register_dependencies load_basic_dependencies parse_routes add_view_builders end
Public Instance Methods
call(env)
click to toggle source
# File lib/dandy/app.rb, line 29 def call(env) request = Request.new(@route_matcher, @container, @safe_executor) request.handle(env) end
Protected Instance Methods
add_view_builder(view_builder, format)
click to toggle source
# File lib/dandy/app.rb, line 36 def add_view_builder(view_builder, format) @view_builder_registry.add(view_builder, format) end
Private Instance Methods
add_view_builders()
click to toggle source
# File lib/dandy/app.rb, line 42 def add_view_builders add_view_builder(ViewBuilders::Json, 'json') end
load_basic_dependencies()
click to toggle source
# File lib/dandy/app.rb, line 79 def load_basic_dependencies @dandy_config = @container.resolve(:dandy_config) @view_factory = @container.resolve(:view_factory) @dependency_loader = @container.resolve(:dependency_loader) @view_builder_registry = @container.resolve(:view_builder_registry) @route_parser = @container.resolve(:route_parser) @safe_executor = @container.resolve(:safe_executor) @dependency_loader.load_components end
parse_routes()
click to toggle source
# File lib/dandy/app.rb, line 90 def parse_routes @routes = @route_parser.parse @route_matcher = Routing::Matcher.new(@routes) end
register_dependencies()
click to toggle source
# File lib/dandy/app.rb, line 46 def register_dependencies instances = { config_file_path: 'dandy.yml', dandy_env: ENV['DANDY_ENV'] || 'development', env: ENV } instances.keys.each do |name| @container.register_instance(instances[name], name) end singletons = { dandy_config: Config, type_loader: TypeLoader, dependency_loader: DependencyLoader, template_loader: TemplateLoader, template_registry: TemplateRegistry, view_builder_registry: ViewBuilderRegistry, view_factory: ViewFactory, file_reader: Routing::FileReader, syntax_parser: SyntaxParser, syntax_error_interpreter: Routing::SyntaxErrorInterpreter, routes_builder: Routing::Builder, route_parser: Routing::Parser, safe_executor: SafeExecutor } singletons.keys.each do |name| @container.register(singletons[name], name) .using_lifetime(:singleton) end end