Основная структура стандартного проекта Ruby в основном:
lib/
foo.rb
foo/
share/
foo/
test/
helper.rb
test_foo.rb
HISTORY.md (or CHANGELOG.md)
LICENSE.txt
README.md
foo.gemspec
share/
встречается редко и иногда называется data/
. Это не-ruby файлы общего назначения. Большинству проектов это не нужно, но даже когда они много раз, все просто хранится в lib/
, хотя это, вероятно, не лучшая практика.
Каталог test/
может называться spec/
, если вместо TDD используется BDD, хотя вы также можете увидеть features/
, если используется огурец, или demo/
, если используется QED.
В наши дни foo.gemspec
может быть просто .gemspec
- особенно если он не поддерживается вручную.
Если в вашем проекте есть исполняемые файлы командной строки, добавьте:
bin/
foo
man/
foo.1
foo.1.md or foo.1.ronn
Кроме того, большинство проектов Ruby имеют:
Gemfile
Rakefile
Gemfile
- для использования Bundler, а Rakefile
- для инструмента сборки Rake. Но есть и другие варианты, если вы хотите использовать другие инструменты.
Несколько других необычных файлов:
VERSION
MANIFEST
Файл VERSION
содержит только номер текущей версии. И MANIFEST
(или Manifest.txt
) содержит список файлов, которые будут включены в файл (ы) пакета проекта (например, пакет gem).
Что еще вы можете увидеть, но использование носит спорадический характер:
config/
doc/ (or docs/)
script/
log/
pkg/
task/ (or tasks/)
vendor/
web/ (or site/)
Где config/
содержит различные файлы конфигурации; doc/
содержит сгенерированную документацию, например, RDoc или иногда документация, поддерживаемая вручную; script/
содержит сценарии оболочки для использования проектом; log/
содержит сгенерированные журналы проекта, например, отчеты о тестировании покрытия; pkg/
содержит сгенерированные файлы пакетов, например, foo-1.0.0.gem
; task/
может содержать различные файлы задач, такие как foo.rake
или foo.watchr
; vendor/
содержит копии других проектов, например, подмодули git; и наконец web/
содержит файлы сайта проекта.
Затем некоторые специфичные для инструмента файлы, которые также относительно распространены:
.document
.gitignore
.yardopts
.travis.yml
Они довольно очевидны.
Наконец, я добавлю, что я лично добавляю файл .index
и каталог var/
для создания этого файла (подробнее об этом поищите в "Rubyworks Indexer") и часто имею каталог work
, что-то вроде :
work/
NOTES.md
consider/
reference/
sandbox/
Просто как свалка для целей разработки.