2010-09-24 89 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。