当前位置:  开发笔记 > 编程语言 > 正文

理想的红宝石项目结构

如何解决《理想的红宝石项目结构》经验,为你挑选了3个好方法。

我正在概述/澄清ruby(非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

我有什么不对吗?我错过了哪些部分?



1> Chris Lloyd..:

我认为这很有意义.默认情况下,Rubygems会将lib目录添加到加载路径,但您可以使用$:变量将所需的任何目录推送到该目录.即

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

这意味着当你说,surfer.rb在那个目录中,你可以require "surfer"在任何地方找到文件.

此外,作为惯例,类和单例获取文件,模块获取目录.例如,如果你有LolCatz模块和LolCatz::Moar类看起来像:

lib/
  appname.rb
  lolcatz/
    moar.rb

这就是为什么有一个lib/appname文件夹,因为大多数库都在 appname命名空间中.

另外,如果你尝试运行一个命令newgem --simple [projectname],它将为你快速生成一个脚手架,只需要一个Ruby项目的基本要素(以及一个Ruby Gem).我知道还有其他工具可以做到这一点,但是newgem很常见.我通常摆脱TODO文件和所有脚本的东西.


请注意,您必须[sudo] gem install newgem才能获取newgem命令...
您还可以使用bundle生成gem模板.在发表评论时,newgem尚未承诺9个月.命令是`bundle gem gem_name`
我没有得到你用`lib`描述的行为自动添加到加载路径.这是1.9件事吗?是否需要任何特殊配置才能实现?

2> Sam Shiles..:

请参阅http://guides.rubygems.org/what-is-a-gem/中的以下示例

 % tree freewill
    freewill/
    ??? bin/
    ?   ??? freewill
    ??? lib/
    ?   ??? freewill.rb
    ??? test/
    ?   ??? test_freewill.rb
    ??? README
    ??? Rakefile
    ??? freewill.gemspec



3> berlin.ab..:

我试图模仿Rails项目结构,因为我的团队(通常处理Rails)将比其他配置更好地理解结构.约定优于配置 - 从Rails中流血.


如果某个外部开发人员查看您的代码,他/她将看到的只是您的_personal_约定.我认为对于一个中型/大型项目,使用一组用于完全不同类型的项目的约定甚至可能导致更多的混淆.它是一个rails应用程序,一个红宝石应用程序?为什么它的设计类似于rails应用程序?"在我破坏某些东西之前,我最好先和开发者联系......?" 这将从一开始就增加一些开销..
推荐阅读
重庆制造漫画社
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有