我想知道是否有关于将非标准 Ruby 文件放在 Rails 应用程序中的位置的最佳实践,那些不适合任何默认目录(controllers
/models
等)的文件。
我说的是控制器/模型等使用的类,但不是任何 Rails 基类的子类。包含从模型中提取的功能的类,以减少它们的脂肪。其中一些看起来像模型但不是 AR 模型,其中一些看起来更像“服务”,有些介于两者之间或其他东西。
一些随机的例子:
- 通过 facebook 等处理使用密码进行身份验证的“策略”类。
- 封装参数的“XParams”对象或处理参数处理以执行一些复杂动作的“XCreator”对象,最终创建一些AR模型
- 向外部 API 发出请求或封装这些请求和响应的类
- 可以替代真实 AR 模型的假模型(例如访客用户)
- Resque 职位
- 从 Redis 存储和读取信息的类
- 执行某些特定操作(如处理数据、生成报告等)并从 Resque 作业或 rake 任务中调用的类
我现在有很多这样的东西,其中一些被添加到lib
其中最终成为一堆随机的类和模块,一些潜入app/models
. 我想以某种方式组织这个,但我不知道从哪里开始。
只有AR模型才能进入app/models
吗?或者也可以放任何域或辅助模型?您如何确定某物是否为模型?
所有不适合的东西都应该app
进入lib
吗?或者也许我应该添加一些新的自定义子目录app
?哪些子目录,以及如何划分自定义类?
你如何在你的项目中处理这个问题?我知道每个项目都有点不同,但一定有一些相似之处。