2010-10-25 111 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)。

你的第三個問題不清楚。對於那個很抱歉。不太確定你想要做什麼。