Я думаю, что это очень точно. По умолчанию Rubygems добавит каталог lib в путь загрузки, но вы можете вставить в него любой каталог, используя переменную $:. т.е.
$:.push File.expand_path(File.dirname(__FILE__) + '/../surfcompstuff')
Это означает, что когда вы скажете, surfer.rb
в require "surfer"
этом каталоге , вы можете где угодно, и файл будет найден.
Кроме того, по соглашению классы и синглтоны получают файл, а модули - каталог. Например, если бы у вас были LolCatz
модуль и LolCatz::Moar
класс, которые выглядели бы так:
lib/
appname.rb
lolcatz/
moar.rb
Вот почему существует папка lib / appname, потому что большинство библиотек находятся в appname
пространстве имен.
Вдобавок, если вы попытаетесь запустить команду, newgem --simple [projectname]
которая быстро сгенерирует для вас каркас, содержащий только самое необходимое для проекта Ruby (и, как следствие, Ruby Gem). Я знаю, что есть и другие инструменты, которые делают это, но newgem довольно распространен. Обычно я избавляюсь от файла TODO и всего остального скрипта.