Я работаю с некоторым старым RoR-кодом, который имеет четыре связанных класса, каждый из которых определяется в собственном файле. Все эти классы являются классами парсера и живут в приложениях/моделях/парсерах. Каждое имя файла заканчивается _parser.rb.Ruby - :: in class name
Вот пример класс Защита строка из файла adf_parser.rb:
class Parsers::AdfParser
Я потерял, как к тому, что Парсеры :: часть того, что делает.
- Нет явного модуля под названием Parsers, который определяется где угодно, где я могу найти.
- Я не вижу никакой документации о неявном создании модулей, просто добавляя спецификации модулей к именам классов.
- Единственная внешняя зависимость - «требуется» csv ».
- В классе def есть предложения, но я не думаю, что у них есть что-то, что могло бы объяснить имя класса.
- Я создал новый тестовый проект RoR и поместил заглушки этих файлов в параллельный каталог, и они не будут запускаться из командной строки из-за ошибки имени .
- Я не вижу примеров онлайн классов, названных таким образом.
Я уверен, что это не ракетостроение, но я потерял большую часть своего утра, пытаясь понять это, и мне бы это понравилось, если бы кто-то мог просто сказать мне, что с ним происходит.
Обновление: похоже, что это всего лишь магия Rails, основанная на имени подкаталога. Я думаю, причина, по которой я получил ошибку в своем тестовом приложении, заключается в том, что я просто запускал файлы через интерпретатор ruby, а не вызывал их с Rails в некотором роде.
Это просто пространство имен. Что вы пытаетесь выяснить? –
Какая ошибка вы получаете в командной строке? Как @DaveNewton сказал, что это просто пространство имен. Вы можете сделать это My :: Fancy :: Parsers :: AdfParser, если хотите, но каждый раз вам придется обращаться к нему так. – awbergs
@ Давно, но пространство имен должно быть определено где-то. Я думаю, что OP говорит, что они не могут найти определение модуля 'Parsers', поэтому задается вопросом, происходит ли что-то особенное. – mikej