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

22 ruby ruby-on-rails project code-organization project-organization

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

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

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

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

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

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

von*_*rad 11

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

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

有很多文档可用于创建宝石.这里有关于文件结构的更多信息,以及其他有用的提示.


use*_*322 8

除了vonconrad的答案中推荐的链接,你可以参考Dave Thomas等编写Ruby 1.9的第16章"组织你的源代码" .这部分书免费样本PDF.

本章提到:

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
Run Code Online (Sandbox Code Playgroud)