【问题标题】:Rails: Where do you put non-model code?Rails:你把非模型代码放在哪里?
【发布时间】:2010-09-24 02:25:52
【问题描述】:

我是 Rails 新手,并且一直在学习 Rails 3 的业余项目。有时我想编写一些不属于我的模型或控制器的代码 - 与模型和/或控制器相关的问题,但我不想将它们中的任何一个与实现细节混淆我在写什么。

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

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

...提前致谢。

【问题讨论】:

    标签: ruby-on-rails organization


    【解决方案1】:

    您应该可以使用根目录中的lib 文件夹(除非它在 ​​Rails 3 中更改)。
    您可以从那里引用课程而无需 require 声明。

    【讨论】:

    • Rails 3 不会从 lib 中自动要求,因此您应该明确要求它。
    • Andrew - 我需要使用 Rails.root 之类的东西来访问 lib 文件夹吗?还是我只使用'lib/'?
    【解决方案2】:

    一个“常见”的建议是说“把这些东西放在lib”。但还有其他地方需要考虑:

    1. 考虑在app 中创建一个子文件夹。一些例子包括:app/workers、app/observers、app/sweepers,或者任何对你有意义的东西。

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

    3. 最后,只有当以上没有意义时,你可以使用lib。不要忘记您可以使用子文件夹来防止它变得过于垃圾。

    而且,一旦您的工作和完善,请考虑将您的代码提取到 gem 中。例如,请参阅 Creating a New Gem with Bundler 上的 RailsCast。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-11-14
      • 1970-01-01
      • 2012-10-14
      • 2011-03-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-11-23
      相关资源
      最近更新 更多