2012-01-11 36 views
0

前言:这不是关于如何在文件中构造代码。我有这个。这更多的是组织源码树的主题。希望有人会说,“这是关于这个话题的一个很好的链接。”然而,关于这个问题的第一手意见也是受欢迎的。Ruby程序结构

因此,我已经做了一些关于这个主题的研究,并在简单的结构上找到大量的材料。我想这个假设是,当你需要处理代码库的大小问题时,你已经知道了答案。然而,即使IDE似乎正在进行一场关于这些项目应该如何结构化的神圣战争(这不是我想从这个主题开始的)。

Java强制使用该语言的包结构。荣誉。然后,Eclipse允许您使用项目(可能)独立 - 在本例中我们将它们称为“桶” - 相关代码的桶。 Intellij在'项目'的单例实例中有着与'模块'不同但相似的概念。如果你想要另一个项目,你基本上从头开始。

但是,RubyMine在Ruby应用程序中没有提供这样的模块,默认情况下只想将所有内容都打入根目录。它允许目录,所以基本上可以选择一些任意的树结构并运行它。这意味着我们的意图是所有的类都可以访问项目中的所有其他类。这可能通过使用Ruby的“模块”来解决,或者可能只是“不要引用那些东西”的荣誉系统模式。因此,简单地说,我正在构建'foo'和'bar'概念,并且都依赖于'util'类。也许我会将它们部署为宝石,也许我不会。我可以:

  • 将它们全部整合到一个RubyMine项目中,并忽略'foo'和'bar'没有理由相互认识的事实。
  • 把它们放在它自己的RubyMine项目中。这似乎是一个真正的痛苦,如果有任何并发​​的发展。首先,'util'必须单独打包,然后作为外部资源包含在其他项目中。

两者似乎都没有特别的吸引力。 Thougts?

回答

0

我会开发所有三个独立的,然后使实用宝石。在每个foo和bar的Gemfile中,你可以给这个gem一个path,这样你就可以同时开发它们,而不会受到版本号等的干扰(对于生产,你会指向真正的宝石在Rubygems或者一些git仓库中)。

对于项目结构,请查看Ruby Packaging StandardGem Patterns