Myślę, że to jest trafne. Domyślnie Rubygems doda katalog lib do ścieżki ładowania, ale możesz przesłać do niego dowolny katalog, używając zmiennej $:. to znaczy
$:.push File.expand_path(File.dirname(__FILE__) + '/../surfcompstuff')
Oznacza to, że kiedy powiesz, surfer.rb
w tym require "surfer"
katalogu , możesz gdziekolwiek i plik zostanie znaleziony.
Ponadto, zgodnie z konwencją, klasy i singletony otrzymują plik, a moduły otrzymują katalog. Na przykład, gdybyś miał LolCatz
moduł i LolCatz::Moar
klasę, które wyglądałyby następująco:
lib/
appname.rb
lolcatz/
moar.rb
Dlatego istnieje folder lib / appname, ponieważ większość bibliotek znajduje się w appname
przestrzeni nazw.
Dodatkowo, jeśli spróbujesz uruchomić polecenie newgem --simple [projectname]
, które szybko wygeneruje dla Ciebie rusztowanie, zawierające tylko podstawowe elementy projektu Ruby (a co za tym idzie, Klejnot Ruby). Wiem, że istnieją inne narzędzia, które to robią, ale newgem jest dość powszechny. Zwykle pozbywam się pliku TODO i całego skryptu.