纯Ruby项目的目录布局
时间:2020-03-05 18:51:23 来源:igfitidea点击:
我开始学习红宝石。我也是日常C ++开发人员。
对于C ++项目,我通常使用以下目录结构
/ -/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,non-Merb)来保持其干净,简单和可维护?
解决方案
回答
为什么不使用相同的布局?通常,我们不需要构建,因为没有编译步骤,但是其余的对我来说似乎还可以。
我不确定模块的含义,但是如果只是一个类,则不需要单独的文件夹,并且如果有多个文件,通常可以编写module-1.rb文件(名称级别为module-1文件夹)仅需要module-1 /中的所有功能。
哦,我建议使用Rake来执行管理任务(而不是make)。
回答
@Dentharg:"包括一个包括所有子部分"是一种常见的模式。像其他任何东西一样,它具有优点(容易获得所需的东西)和缺点(许多包含项可能会污染名称空间,我们无法控制它们)。模式如下所示:
- src/ some_ruby_file.rb: require 'spider' Spider.do_something + doc/ - lib/ - spider/ spider.rb: $: << File.expand_path(File.dirname(__FILE__)) module Spider # anything that needs to be done before including submodules end require 'spider/some_helper' require 'spider/some/other_helper' ...
我可能会建议这样做以允许更多控制:
- src/ some_ruby_file.rb: require 'spider' Spider.include_all Spider.do_something + doc/ - lib - spider/ spider.rb: $: << File.expand_path(File.dirname(__FILE__)) module Spider def self.include_all require 'spider/some_helper' require 'spider/some/other_helper' ... end end
回答
我们可以安装newgem RubyGem并让它为我们生成布局。
$ gem install newgem $ newgem spider create create config create doc create lib create script create tasks create lib/spider create History.txt create License.txt create Rakefile create README.txt create PostInstall.txt create setup.rb create lib/spider.rb create lib/spider/version.rb create config/hoe.rb create config/requirements.rb create tasks/deployment.rake create tasks/environment.rake create tasks/website.rake dependency install_test_unit create test create test/test_helper.rb create test/test_spider.rb dependency install_website create website/javascripts create website/stylesheets exists script exists tasks create website/index.txt create website/index.html create script/txt2html force tasks/website.rake dependency plain_theme exists website/javascripts exists website/stylesheets create website/template.html.erb create website/stylesheets/screen.css create website/javascripts/rounded_corners_lite.inc.js dependency install_rubigen_scripts exists script create script/generate create script/destroy create script/console create Manifest.txt readme readme Important ========= * Open config/hoe.rb * Update missing details (gem description, dependent gems, etc.)
然后,在lib /中,根据需要创建模块:
lib/ spider/ base.rb crawler/ base.rb spider.rb require "spider/base" require "crawler/base"
回答
我会坚持与我们熟悉的类似的东西:在我们自己的项目目录中成为陌生人是没有意义的。 :-)
我经常拥有的典型东西是lib | src,bin,test。
(我不喜欢这些怪物生成器:我要对一个新项目做的第一件事是记下一些代码,而不是编写自述文件,文档等!)
回答
所以我选择了newgem。
我删除了所有不必要的RubyForge / gem内容(hoe,设置等),创建了git repo,将项目导入了NetBeans。整个过程耗时20分钟,所有内容都呈绿色。
这甚至给了我一个针对spec文件的基本rake任务。
谢谢你们。