Pracuję z pewnym starszym kodem RoR, który ma cztery powiązane klasy, z których każda jest zdefiniowana we własnym pliku. Wszystkie te klasy są klasami analizatora składni i są dostępne w aplikacjach/modelach/analizatorach składni. Każda nazwa pliku kończy się _parser.rb.Ruby - :: w nazwie klasy
Oto przykład linia def klasy z pliku adf_parser.rb:
class Parsers::AdfParser
gubię, co Parsery :: częścią tego robi.
- Nie ma wyraźnego modułu o nazwie Parsery zdefiniowanego w dowolnym miejscu, które można znaleźć.
- Nie widzę dokumentacji o niejawnym tworzeniu modułów przez dodanie specyfikacji modułów do nazw klas.
- Jedyną zewnętrzną zależnością jest "wymaganie" csv "".
- Istnieją pewne instrukcje wewnątrz klasy def, ale nie sądzę, że mają coś, co wyjaśniałoby nazwę klasy.
- Utworzono nowy projekt testowy RoR i umieszczam pliki pośredniczące tych plików w katalogu równoległym, a nie będą one uruchamiane z wiersza poleceń z powodu błędu nazwy .
- Nie widzę żadnych przykładów online klas wymienionych w ten sposób.
Jestem pewien, że to nie jest operacja rakieta, ale ja straciłem większość mojego rano próbuje dowiedzieć się tego, a ja kocham to, czy ktoś może mi powiedzieć, co się dzieje z nim.
Aktualizacja: Wygląda na to, że jest to tylko odrobina magii Railsów, oparta na nazwie podkatalogu. Myślę, że powodem, dla którego dostałem błąd w mojej aplikacji testowej jest to, że po prostu uruchomiłem pliki przez interpreter ruby, zamiast wywoływać je w jakiś sposób za pomocą Railsów.
To tylko przestrzeń nazw. Co próbujesz wymyślić? –
Jaki błąd pojawia się w linii poleceń? Podobnie jak @DaveNewton powiedział, że to tylko przestrzeń nazw. Możesz zrobić to My :: Fancy :: Parsers :: AdfParser, jeśli chcesz, ale w ten sposób będziesz musiał uzyskać do niego dostęp w ten sposób za każdym razem. – awbergs
@Daj tak, ale przestrzeń nazw musi być gdzieś zdefiniowana. Myślę, że OP mówi, że nie mogą znaleźć definicji modułu 'Parsers', więc zastanawia się, czy coś specjalnego się dzieje. – mikej