module SkinnyControllers::Lookup::Namespace

Public Instance Methods

create_namespace(desired_namespace) click to toggle source

iterate through the namespaces until one doesn't exist, and create the rest

# File lib/skinny_controllers/lookup/namespace.rb, line 8
def create_namespace(desired_namespace)
  if klass = desired_namespace.safe_constantize
    return klass
  end

  namespaces = desired_namespace.split('::')
  existing = []
  previous = Object

  namespaces.each do |namespace|
    current = (existing + [namespace]).join('::')
    begin
      Object.const_get(current)
    rescue NameError
      SkinnyControllers.logger.warn("Module #{namespace} not found, creating...")
      previous.const_set(namespace, Module.new)
    end

    existing << namespace
    previous = current.safe_constantize
  end

  SkinnyControllers.logger.warn("Namespace is nil. Attempted: '#{desired_namespace}'") unless previous

  previous
end