Вопрос

Я ищу обзор / разъяснение идеальной структуры проекта для проекта ruby (не 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

Я что-то не так понял?Какие части я пропустил?

Это было полезно?

Решение

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

Другие советы

Смотрите следующий пример из http://guides.rubygems.org/what-is-a-gem/

 % tree freewill
    freewill/
    ├── bin/
    │   └── freewill
    ├── lib/
    │   └── freewill.rb
    ├── test/
    │   └── test_freewill.rb
    ├── README
    ├── Rakefile
    └── freewill.gemspec

Я пытаюсь имитировать структуру проекта Rails, потому что моя команда, которая обычно имеет дело с Rails, поймет структуру лучше, чем другая конфигурация.Соглашение о конфигурации - вытекает из Rails.

Если вы используете bundler, выполните эту команду bundle gem app_name это даст вам ту же структуру каталогов.

Если вы хотите использовать rspec вместо модульных тестов, вы можете выполнить эту команду rspec --init (Просто убедитесь, что вы cd app_name первый)

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top