用于组织多文件Ruby程序的系统?

时间:2010-01-04 18:47:21

标签: ruby-on-rails ruby project code-organization project-organization

是否有用于组织多文件Ruby程序的标准或传统系统?我已经开始使用Ruby中的第一个大型“项目”,这是一个逻辑上组织成多个文件和目录的搜索程序。我在下面概述了我的潜在结构:

  • 主文件。该文件实现了搜索类和通用搜索协议。
  • 算法分析文件。该文件实现了解释搜索结果的函数。
  • 协议目录
    • 每个协议包含一个要搜索的文件。
  • 提供目录
    • 该计划的部分目的是搜索存档的新闻源。此功能的文件将放在此文件夹中。

但是,代码目前有一个类(让我们称之为Searcher),每个协议的搜索类都继承自(GoogleSearcher< Searcher)。为了管理这个,我需要将主文件包含在这些协议文件中(对吗?),鉴于我的理想结构,这似乎是不可能的。

除了我的具体例子,我想知道是否有任何约定,例如“更多文件而不是更少”,或“文件的逻辑结构是不必要的”。拥有“帮助”函数的文件是常见的(例如在Rails中?)什么级别的抽象被认为是合适的?

最后,我计划有一天将它集成到Rails作为库(不是插件;我希望它也可以独立工作)。我不知道这是否会影响组织。

我知道这是一个非常开放的问题,但那是因为我会感谢任何与远程相关的建议。提前谢谢。

5 个答案:

答案 0 :(得分:11)

您可能需要考虑为库创建gem。这样可以轻松地使用独立的库和Rails,以及简化部署/更新。

此外,由于宝石通常遵循特定的目录结构,因此它也解决了您不知道如何组织库的问题。

有大量可用于创建宝石的文档。 Here有关文件结构的更多信息,以及其他有用的提示。

答案 1 :(得分:8)

除了v​​onconrad答案中推荐的链接外,您还可以参考Dave Thomas等人在Programing Ruby 1.9第16章中的“组织您的来源”部分。有free sample PDF of that part of the book

本章提到:

  

16.1命名空间我们已经遇到过Ruby帮助您管理程序中名称的方法。如果你定义方法或   类中的常量,Ruby确保只能使用它们的名称   在该类的背景下

  

16.2组织你的来源小的,自包含的脚本可以在一个文件中... 更大的程序应该考虑RubyGems系统

anagram/ <- top-level
  bin/ <- command-line interface goes here
  lib/ <- three library files go here
  test/ <- test files go here

答案 2 :(得分:2)

您可能希望结合vonconrad的建议来查看Ideal ruby project structure。宝石肯定是一个好的起点,通过官方rubygems documentation也可能是有益的。

答案 3 :(得分:0)

如果你想与Rails集成,你可能想要创建一个插件。

本指南可能是一个很好的起点:http://guides.rubyonrails.org/plugins.html

答案 4 :(得分:0)

我知道这个问题已经很老了,但希望对那些追求过的人有用......

我同意上面所说的:宝石是组织和重用代码的好方法。 除了上面的链接,我可以建议使用Bundler按照概述创建宝石 在这个Ryan Bates RailsCast中:http://railscasts.com/episodes/245-new-gem-with-bundler

我发现Bundler使宝石的创建和维护变得非常简单。

关于继承,请查看Ruby mixins如何用于封装和重用代码 跨越不同的类层次结构。 http://ruby-doc.org/docs/ProgrammingRuby/html/tut_modules.html

相关问题