Я хотел бы получить доступ к дочерним классам пространств имен, используя только родительское пространство имен в качестве префикса.
Я хочу, чтобы мои модели и контроллеры находились в отдельных дочерних папках и чтобы у них было дочернее пространство имен, но затем можно Псевдоним дочернего пространства имен, чтобы к нему можно было получить доступ через root пространство имен.
# This is the only class that is in the root namespace
provider = Cool::Provider.new
# Live in models namespace
company = Cool::Company.new
employee = Cool::Employee.new
# Live in controllers namespace
company_controller = Cool::CompanyController.new
employee_controller = Cool::EmployeeController.new
Спасибо тем, кто ответил о сопоставлении одного класса одновременно с родительским пространством имен, но я видел другой механизм это казалось более естественным в популярном GEM, и я пытаюсь найти эту технику.
Я смотрел на популярный драгоценный камень несколько месяцев go (забыл, какой драгоценный камень), и они добавили немного кода внизу каждого дочернего пространства имен, чтобы сделать этот класс доступным, как если бы он был в родительском пространстве имен, но я не могу найти этот гем или как они это сделали.
Допустим, у меня есть список классов в этих файлах
cool/provider.rb
cool/models/company.rb
cool/models/employee.rb
cool/controllers/company_controller.rb
cool/controllers/employee_controller.rb
Вот классы
module Cool
class Provider
end
end
module Cool
module Model
class Company
end
end
# The GEM I saw, did something here
end
module Cool
module Model
class Employee
end
end
# The GEM I saw, did something here
end
module Cool
module Controller
class CompanyController
end
end
# The GEM I saw, did something here
end
module Cool
module Controller
class EmployeeController
end
end
# The GEM I saw, did something here
end