一个标准的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
是使用捆扎机,而Rakefile
是耙构建工具。但是如果您想使用不同的工具,还有其他选择。
其他一些不那么常见的文件:
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/
包含供项目使用的shell脚本; log/
包含生成的项目日志,例如测试覆盖率报告; pkg/
保存生成的包文件,例如, foo-1.0.0.gem
; task/
可以容纳各种任务文件,如foo.rake
或foo.watchr
; vendor/
包含其他项目的副本,例如git submodules;最后web/
包含该项目的网站文件。
那么有些工具特定文件也比较常见:
.document
.gitignore
.yardopts
.travis.yml
他们是相当不言自明。
最后,我要补充的是,我个人添加.index
文件和var/
目录建立一个文件(搜索“Rubyworks索引”了解更多有关),往往有一个work
目录,是这样的:
work/
NOTES.md
consider/
reference/
sandbox/
只是一种用于开发目的的废弃物。
最新的newgem产生更少的cruft这很好。 – 2008-12-30 04:31:17