我开始学习红宝石了.我也是一个日常的C++开发人员.对于C++项目,我通常使用以下dir结构
/ -/bin <- built binaries -/build <- build time temporary object (eg. .obj, cmake intermediates) -/doc <- manuals and/or Doxygen docs -/src --/module-1 --/module-2 -- non module specific sources, like main.cpp - IDE project files (.sln), etc.
Ruby(非Rails,非Merb)的dir布局会建议保持干净,简单和可维护吗?
截至2011年,通常使用珠宝商代替newgem,因为后者被有效放弃.
Bundler包含生成gem的必要基础结构:
$ bundle gem --coc --mit --test=minitest --exe spider Creating gem 'spider'... MIT License enabled in config Code of conduct enabled in config create spider/Gemfile create spider/lib/spider.rb create spider/lib/spider/version.rb create spider/spider.gemspec create spider/Rakefile create spider/README.md create spider/bin/console create spider/bin/setup create spider/.gitignore create spider/.travis.yml create spider/test/test_helper.rb create spider/test/spider_test.rb create spider/LICENSE.txt create spider/CODE_OF_CONDUCT.md create spider/exe/spider Initializing git repo in /Users/francois/Projects/spider Gem 'spider' was successfully created. For more information on making a RubyGem visit https://bundler.io/guides/creating_gem.html
然后,在lib /中,根据需要创建模块:
lib/ spider/ base.rb crawler/ base.rb spider.rb require "spider/base" require "crawler/base"
请阅读手册页包宝石有关详细信息--coc
,--exe
并--mit
选择.
标准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/
,尽管这可能不是最佳实践.
如果使用BDD而不是TDD,则test/
可能会调用该目录spec/
,但您可能还会看到features/
是否使用了Cucumber,或者demo/
是否使用了QED.
这些天foo.gemspec
可以 - 特别是.gemspec
如果不是手动维护.
如果您的项目具有命令行可执行文件,则添加:
bin/ foo man/ foo.1 foo.1.md or foo.1.ronn
此外,大多数Ruby项目都有:
Gemfile Rakefile
的Gemfile
是使用捆扎机,以及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/
包含供项目使用的shell脚本; 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/
只是用于开发目的的scrapyard.