Ruby程序结构

时间:2012-01-11 06:45:38

标签: ruby rubymine

前言:这与如何在文件中构建代码并不相关。我知道了。这更多是组织源树的主题。希望有人会说,“这是关于这个话题的一个很好的链接。”但是,也欢迎有关该主题的第一手意见。

所以我已经对这个主题进行了一些挖掘,并在简单的结构上找到了大量的材料。我猜这个假设是,当你需要处理代码库大小的问题时,你已经知道了答案。然而,即使是IDE似乎也在对如何构建这些项目进行一场神圣的战争(这不是我想在这个线程中开始的)。

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

但是,RubyMine在ruby应用程序中没有提供这样的模块,默认情况下只想将所有内容都放入根目录。它允许目录,因此人们可以基本上只选择一些任意的树结构并运行它。这意味着我的意图是所有类都可以访问项目中的所有其他类。这可能通过使用Ruby'模块'得到一些解决方案,或者可能只是一个荣誉系统模式“不要引用那些东西。”

所以,简单地说,我说我正在构建一个'foo'和'bar'概念,并且都依赖于'util'类。也许我会将它们部署为宝石,也许我不会。我可以:

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

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

1 个答案:

答案 0 :(得分:0)

我将独立开发这三个,然后使util成为一个宝石。在每个foo和bar的Gemfile中,你可以给gem一个path,这样你就可以同时开发它们而不会弄乱版本号等等(为了生产,你会指出它)到Rubygems或某些git存储库上的真正的gem。)

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