2010-09-24 58 views
6

我是Rails的新手,並在一個側面項目中學習Rails 3。有時候我想編寫一些不屬於我的模型或控制器的代碼 - 關注與模型和/或控制器相關的問題,但我不想將它們中的任何一個與實現細節混淆在一起我正在寫什麼。Rails:你把非模型代碼放在哪裏?

例如:我正在建設的項目使用Janrain的授權系統(RPX),以便我可以獲得oauth,openid,google等授權。他們提供了很多API代碼,所以我不必自己編寫它。此代碼不屬於登錄控制器或用戶模塊中。它是授權代碼,因此需要由登錄控制器訪問,但它不是該控制器的一部分。

你把這段代碼放在哪裏?它不是模型代碼。它不屬於控制器。

...提前致謝。

回答

5

你應該可以在根目錄下使用lib文件夾(除非它在Rails 3中更改)。
您可以參考那裏沒有require聲明的課程。

+0

毆打我30秒:) +1 – Matchu 2010-09-24 02:29:35

+1

Rails 3不會自動從lib中請求,所以你應該明確地要求它。 – 2010-09-24 05:09:31

+0

安德魯 - 我需要使用任何像Rails.root到lib文件夾?或者我只使用'lib /'? – 2010-09-24 13:19:56

4

一個'共同'的建議是說'把這東西放在lib'。但還有其他地方需要考慮:

  1. 考慮在app中創建子文件夾。一些例子包括:app/workersapp/observersapp/sweepers,或其他適合您的東西。

  2. 考慮使用config/initializers作爲初始化代碼。

  3. 最後,只有在以上沒有意義的情況下,您纔可以使用lib。不要忘記,你可以使用子文件夾,以防止它太麻煩了。

而且,一旦你把事情搞清楚了,考慮把你的代碼提取到gem中。例如,請參閱Creating a New Gem with Bundler上的RailsCast。