Rails:你在哪里放置非模型代码?

时间:2010-09-24 02:25:52

标签: ruby-on-rails organization

我是Rails的新手,并且已经在侧面项目中学习了Rails 3。有时我想编写一些不属于我的模型或我的控制器的代码 - 与模型和/或控制器相关的问题,但我不想将其中任何一个与实现细节混为一谈我在写什么。

例如:我正在构建的项目使用Janrain的授权系统(RPX),因此我可以获得oauth,openid,google等授权。他们提供了很多很好的API代码,所以我不必自己编写。此代码不属于登录控制器或用户模块。它是授权代码,因此登录控制器需要访问它,但它不是该控制器的一部分。

你把这段代码放在哪里?它不是型号代码。它不属于控制器。

...提前谢谢。

2 个答案:

答案 0 :(得分:5)

您应该可以在根目录中使用lib文件夹(除非在Rails 3中更改了它)。
您可以在没有require语句的情况下从那里引用类。

答案 1 :(得分:4)

'常见'的建议是说'把这些东西放进lib'。但还有其他地方需要考虑:

  1. 考虑在app中创建一个子文件夹。一些示例包括:app/workersapp/observersapp/sweepers或任何对您有意义的内容。

  2. 考虑将config/initializers用于初始化代码。

  3. 最后,只有在上述内容没有意义的情况下,您才能使用lib。不要忘记你可以使用子文件夹来防止它过于垃圾。

  4. 而且,一旦你开始工作和抛光,考虑将你的代码提取到gem中。例如,参见Creating a New Gem with Bundler上的RailsCast。