Я думаю, что это в значительной степени место. По умолчанию 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 и всего, что связано со скриптом.