我希望将我的应用分为多个模块。目前包括一个基础模块(也是主模块),里面包含用户管理(使用 Devise)、机构管理、博客和评论系统等,还将有一个扩展模块,包括领域特定服务。我希望让使用者(身为管理员)可以选择添加扩展模块,添加后网站上自动加载扩展模块,有相应的数据库模型,视图,控制器等等。目前遇到的问题是在扩展模块中也需要使用到用户信息、机构信息,甚至评论系统。不知道该如何优雅地实现各个功能间的解耦合。
个人偏好services 不过跟 engine 比,各有千秋,看个人喜好和具体项目的情况而定哪个更合适。
打个比方, 有的公司喜欢有个内部的人力资源部招收人才:透明度更好,便于深入操作其运作,但是要花时间去管理; 有的公司喜欢找猎头公司招收人才:透明度很差,无法过多对其运作进行干预,但是省很多时间
@flemon 多谢回复!我看了你提供的链接,完全是令一片天地~ 不过好像barrister-rails的关注度不是很高,才 7 颗星,1 个 fork。
barrister-rails
那个 barrister-rails 只是一个 service 的实例,此概念已经存在好一段时间了,你要了解深入后你会有自己的 gem,每一个 gem 就是你的 service 的接口通道