class Silicon::App
Attributes
routes[R]
Public Class Methods
new(container = Hypo::Container.new)
click to toggle source
# File lib/silicon/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/silicon/app.rb, line 29 def call(env) request = Request.new(@route_matcher, @container, @chain_factory, @view_factory) request.handle(env) end
Protected Instance Methods
add_view_builder(view_builder, format)
click to toggle source
# File lib/silicon/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/silicon/app.rb, line 42 def add_view_builders add_view_builder(ViewBuilders::Json, 'json') end
load_basic_dependencies()
click to toggle source
# File lib/silicon/app.rb, line 78 def load_basic_dependencies @chain_factory = @container.resolve(:chain_factory) @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) @dependency_loader.load_components end
parse_routes()
click to toggle source
# File lib/silicon/app.rb, line 88 def parse_routes @routes = @route_parser.parse @route_matcher = Routing::Matcher.new(@routes) end
register_dependencies()
click to toggle source
# File lib/silicon/app.rb, line 46 def register_dependencies instances = { config_file_path: 'silicon.yml', silicon_env: ENV['SILICON_ENV'] || 'development' } instances.keys.each do |name| @container.register_instance(instances[name], name) end singletons = { silicon_config: Config, type_loader: TypeLoader, dependency_loader: DependencyLoader, template_loader: TemplateLoader, template_registry: TemplateRegistry, view_builder_registry: ViewBuilderRegistry, view_factory: ViewFactory, chain_factory: ChainFactory, file_reader: Routing::FileReader, syntax_parser: SyntaxParser, syntax_error_interpreter: Routing::SyntaxErrorInterpreter, routes_builder: Routing::Builder, route_parser: Routing::Parser } singletons.keys.each do |name| @container.register(singletons[name], name) .using_lifetime(:singleton) end end