Ruby on Rails:我应该在哪里存储模块?

时间:2010-10-25 09:59:33

标签: ruby-on-rails module

我是Ruby on Rails的新手,我的问题是关于应用程序设计,基于Rails 3.在Rails上创建标准网站(如博客)的互联网上有很多数据,但我的应用程序需要更多而不只是“发布和阅读”,我不知道如何实现它。

这个想法:

  1. “Route”模型包括多个航空公司模块:“Ryanair”,“easyJet”等。
  2. “Route.Update”方法在每个航空公司模块上调用“UpdateRoutes”(例如,“Ryanair.UpdateRoutes”,“easyJet.UpdateRoutes”)
  3. 它应该以更多模型(例如“Flight.find”)和更多航空公司(“Delta.FindFlights”)
  4. 的工作方式相同

    问题:

    1. 我应该在哪里存储所有模块?我没有在Rails中看到任何app / modules文件夹。
    2. 如果我的模块需要宝石,我应该将它们包含在模块中还是模型中(实际使用它们的地方)?
    3. 我想让我的应用程序可扩展。例如,我想添加一个新的工作航空公司(模块)而不更改“路线”,“飞行”或任何其他模型中的任何代码。我想象类似于“IncludeAirlines”的方法,它将通过modules / airlines / name .rb,包含每个模块并调用它所需的方法(例如 name 。 UpdateRoutes)。有没有更好的方法在Ruby on Rails中实现它?

1 个答案:

答案 0 :(得分:36)

您可能知道,模块通常用作命名空间或mixins。

放置模块的位置取决于模块与app目录的紧密耦合程度。存储模块中的一些模式:

  1. / lib目录,如果模块没有特别“交互”或关注应用程序/并且您将模块视为内部插件。

  2. 如果您的模块是业务逻辑的核心,那么app / models目录将是一个合适的位置。这里是一个流行的用例,您可以使用模块作为混合来干燥您的模型/控制器。

  3. 37 Signals introduced a pattern of treating them as 'concerns'并将其存储在app / Concer。

  4. 如果你的模块使用gem,你可能需要在模块中需要gem(有时候根本不需要)。

    你的第3个问题不明确。对于那个很抱歉。不太清楚你想要做什么。

相关问题