Мне нужен обзор / разъяснение идеальной структуры проекта для проекта ruby (non-rails / merb / etc). Я предполагаю, что это следует
app/
bin/ #Files for command-line execution
lib/
appname.rb
appname/ #Classes and so on
Rakefile #Running tests
README
test,spec,features/ #Whichever means of testing you go for
appname.gemspec #If it's a gem
Я что-то не так понял? Какие части я пропустил?
ruby
project-structure
dylanfm
источник
источник
Ответы:
Я думаю, что это очень точно. По умолчанию Rubygems добавит каталог lib в путь загрузки, но вы можете вставить в него любой каталог, используя переменную $:. т.е.
Это означает, что когда вы скажете,
surfer.rb
вrequire "surfer"
этом каталоге , вы можете где угодно, и файл будет найден.Кроме того, по соглашению классы и синглтоны получают файл, а модули - каталог. Например, если бы у вас были
LolCatz
модуль иLolCatz::Moar
класс, которые выглядели бы так:Вот почему существует папка lib / appname, потому что большинство библиотек находятся в
appname
пространстве имен.Вдобавок, если вы попытаетесь запустить команду,
newgem --simple [projectname]
которая быстро сгенерирует для вас каркас, содержащий только самое необходимое для проекта Ruby (и, как следствие, Ruby Gem). Я знаю, что есть и другие инструменты, которые делают это, но newgem довольно распространен. Обычно я избавляюсь от файла TODO и всего остального скрипта.источник
lib
автоматическом добавлении в путь загрузки. Это вещь 1.9? Для этого требуется какая-то особая конфигурация?bundle gem gem_name
См. Следующий пример с http://guides.rubygems.org/what-is-a-gem/
источник
Я пытаюсь имитировать структуру проекта Rails, потому что моя команда, которая обычно имеет дело с Rails, будет понимать структуру лучше, чем другая конфигурация. Соглашение о конфигурации - утечка из Rails.
источник
Если вы используете сборщик, запуск этой команды
bundle gem app_name
даст вам ту же структуру каталогов.Если вы хотите использовать rspec вместо модульных тестов, вы можете запустить эту команду
rspec --init
(просто убедитесь, что выcd app_name
сначала)источник