2010-10-25 105 views
21

我是Ruby on Rails的新手,我的问题是关于基于Rails 3的应用程序设计。互联网上有很多关于在Rails上创建标准网站(例如博客)的数据,但是我的应用程序需要超过只是“发布和阅读”,我不知道如何实现。Ruby on Rails:我应该在哪里存储模块?

的想法:

  1. 该模型的 “路由” 包括多个航空公司模块: “瑞安”, “易捷” 等
  2. 的 “Route.Update” 方法调用 “UpdateRoutes” (例如,“Ryanair.UpdateRoutes”,“easyJet.UpdateRoutes”)
  3. 它应该以更多模型(例如“Flight.find”)和更多航空公司(“Delta.FindFlights” )

的questio NS:

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

回答

33

正如您所知,模块通常用作名称空间或mixin。

放置模块的位置取决于模块与应用程序目录的紧密耦合程度。在存储模块几个模式:

  1. /lib目录,如果模块没有特别的“互动”或者关注应用程序/而你对待模块作为内部插件。

  2. 的应用程序/型号目录,如果你的模块是中央对你的业务逻辑将是一个合适的地方。这里流行的使用案例是,您使用模块作为混合模式来干您的模型/控制器。

  3. 37 Signals introduced a pattern of treating them as 'concerns'并将其存储在应用程序/顾虑。

如果您的模块使用gem,您可能需要在模块中需要gem(有时并不需要require)。

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

相关问题