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

krn*_*krn 21 module ruby-on-rails

我是Ruby on Rails的新手,我的问题是关于应用程序设计,基于Rails 3.在Rails上创建标准网站(如博客)的互联网上有很多数据,但我的应用程序需要的不仅仅是"发布并阅读"我不知道如何实现这一点.

想法:

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

问题:

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

Shr*_*yas 37

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

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

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

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

  3. 37信号引入了一种将其视为"关注点"并将其存储在app/Concer中的模式.

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

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