Идеальная структура проекта ruby



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


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

707   4  

4 ответов:

Я думаю, что это в значительной степени пятно. По умолчанию, библиотек RubyGems будет добавить в каталог lib в loadpath, но вы можете нажать любой каталог, который требуется на то, что с помощью $: переменная. то есть

$:.push File.expand_path(File.dirname(__FILE__) + '/../surfcompstuff')

это означает, что когда вы говорите:surfer.rb в этом dir, вы можете require "surfer" где и файл будет найден.

кроме того, как соглашение, классы и синглеты получают файл, а модули получают каталог. Например, если бы у вас был LolCatz и LolCatz::Moar класс, будет выглядеть так:

lib/
  appname.rb
  lolcatz/
    moar.rb

вот почему существует папка lib / appname, потому что большинство библиотек находятся в appname пространство имен.

кроме того, если вы выполните команду newgem --simple [projectname] это будет быстро генерировать эшафот для вас только с самыми необходимыми для рубинового проекта (и, как следствие, рубиновый камень). Есть и другие инструменты, которые делают это, я знаю, но 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, поймет структуру лучше, чем другая конфигурация. Соглашение по конфигурации-кровотечение из рельсов.

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

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

Comments

    Ничего не найдено.