2009-10-14 6 views
6

W odniesieniu do tego pytania: Ideal ruby project structure Zauważyłem, że appname.rb jest w bibliotece i jest na najwyższym poziomie.Jaki jest plik .rb <appname> w/lib, z którego zwykle korzysta się w projekcie Ruby?

Czytałem trochę kodu źródłowego Rake na Github i zauważyłem, że ich struktura projektu jest prawie taka sama. Mają plik "rake.rb" najwyższego poziomu w/lib, ale nie jestem pewien, co tam jest.

W kilofie (Programowanie Ruby 1.9) pokazują przykład struktury małego projektu, z prawie taką samą strukturą katalogów powyżej, ale nie ma żadnej wzmianki o używaniu najwyższego poziomu .rb in/lib.

Moje pytanie brzmi: do czego dokładnie jest używane w projekcie Ruby?

Przepraszam, jeśli to jest głupie pytanie, jestem pewien, że tak, ale jestem względnie nowy dla Rubiego. W tej chwili nie znam zbyt wiele Ruby-foo. ;)

Dzięki.

+0

Wygląda na naprawdę dobre pytanie do mnie! –

Odpowiedz

5

Zwykle (iz pewnością w przykładzie rake) plik appname.rb jest skrótem wymagającym wielu innych plików. Jeśli przyjrzeć się temu plikowi w projekcie Rake na GitHub, większość tego, co robi, wymaga plików w katalogu lib/rake i, w razie potrzeby, zawierać moduły. Ten plik pozwala Ci bez konieczności sprawdzania, jakie są indywidualne potrzeby rake'u.

+0

Och, widzę! Dzięki, Emily. – Rayne

4

Opierając się na Emily's answer:

Niektóre projekty zrobić autoload zamiast require w tym pliku. Te ostatnie będą faktycznie ładować wszystkie klasy, podczas gdy te pierwsze po prostu powiedzą systemowi ładującemu klasy, jak je znaleźć, jeśli odwołasz się do nich bez własnego oświadczenia.

Więc wzór wyglądałby następująco:

# in foo_project/lib/foo.rb: 
module Foo 
    autoload :Bar, 'foo/bar' 
    autoload :Baz, 'foo/baz' 
end 

# in foo_project/lib/foo/bar.rb: 
module Foo 
    class Bar 
    ... 
end 

# in foo_project/lib/foo/baz.rb: 
module Foo 
    class Baz 
    ... 
end 

Następnie w projekcie, można wykonać następujące czynności:

+0

Słyszałem, ale nigdy nie używano, autoload. To jest miłe! – Emily

Powiązane problemy