Sha256: f1fc5ba79d347589a77d7e52feaf027c99e378875b81ff20d534cf4a718593d3
Contents?: true
Size: 1.86 KB
Versions: 3
Compression:
Stored size: 1.86 KB
Contents
module Hanami module Boot module SourceDirs def self.setup_component_dir!(component_dir, slice, container) # TODO: this `== "lib"` check should be codified into a method somewhere if component_dir.path == "lib" # Expect component files in the root of the lib # component dir to define classes inside the slice's namespace. # # e.g. "lib/foo.rb" should define SliceNamespace::Foo, and will be # registered as "foo" component_dir.namespaces.root(key: nil, const: slice.namespace_path) slice.application.autoloader.push_dir(slice.root.join("lib"), namespace: slice.namespace) container.config.component_dirs.add(component_dir) else # Expect component files in the root of these component dirs to define # classes inside a namespace matching the dir. # # e.g. "actions/foo.rb" should define SliceNamespace::Actions::Foo, and # will be registered as "actions.foo" dir_namespace_path = File.join(slice.namespace_path, component_dir.path) autoloader_namespace = begin slice.inflector.constantize(slice.inflector.camelize(dir_namespace_path)) rescue NameError slice.namespace.const_set(slice.inflector.camelize(component_dir.path), Module.new) end # TODO: do we need to do something special to clear out any previously configured root namespace here? component_dir.namespaces.root(const: dir_namespace_path, key: component_dir.path) # TODO: do we need to swap path delimiters for key delimiters here? container.config.component_dirs.add(component_dir) slice.application.autoloader.push_dir( slice.root.join(component_dir.path), namespace: autoloader_namespace ) end end end end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
hanami-2.0.0.alpha7.1 | lib/hanami/boot/source_dirs.rb |
hanami-2.0.0.alpha7 | lib/hanami/boot/source_dirs.rb |
hanami-2.0.0.alpha5 | lib/hanami/boot/source_dirs.rb |