23

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

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

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

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

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

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

4

5 回答 5

12

您可能需要考虑为您的库创建一个 gem。这将使独立使用该库和与 Rails 一起使用该库变得容易,并使部署/更新更简单。

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

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

于 2010-01-04T23:46:04.357 回答
8

除了 vonconrad's Answer 中推荐的链接外,您还可以参考Dave Thomas 等人的Programming 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
于 2011-05-20T06:34:21.120 回答
2

您可能想结合 vonconrad 的建议来看看Ideal ruby​​ 项目结构。gem 绝对是一个很好的起点,浏览官方的ruby​​gems 文档也可能是有益的。

于 2010-01-05T02:54:35.863 回答
0

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

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

于 2010-01-04T19:07:59.707 回答
0

我知道这个问题已经很老了,但希望对后来的人有用......

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

我发现 Bundler 让 gem 的创建和维护变得非常简单。

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

于 2011-12-11T22:49:24.047 回答