现有一需求需要对一个复杂的 rails 进行插件化开发,有两个思路:
第一个思路,目前实现的 demo 比较简单,插件中可能还未涉及独立的 db:migrate、worker/jobs 这类的应用,只是一个简单的 mvc,当然如果选择了这个思路最后肯定也是会走通的。
第二个思路,由于我目前对 rails 的 engine 这里还不是很熟悉,只是对 rails 的启动过程有过简单了解,对往下的 rack/railties 都了解不是很多,而且我们这个已有的复杂 rails 应用确实很复杂(如果说可以和 gitlab-ce 相媲美也不为过),所以我考虑的风险点是一个复杂的 rails 应用改造成一个 full engine(暂时就不考虑 mountable engine 吧)挂载到一个新的宿主应用中是否现实?如果要达到这个目标,我需要去学习哪些知识看哪些资料?这个需求排期还有一个月多一点的时间。
目前我查阅到的 engine 的资料大多是介绍 mountable engine 的,不过鉴于我的需求只是不再改动原有的 rails 应用而是对其进行扩展,所以我这里想改造成 full engine 挂载。而对 mountable engine 的入门案例里都算简单,不涉及 engine 变庞大之后像诸如 gem 包加载、目录层级变得很多的情况,比如 lib/下有各种 api 接口,config 下有很多配置和初始化脚本,app 下也会有很多目录。
所以,上面两个思路哪个更符合最佳实践?我倾向于实现第二个思路,但鉴于目前能力所限,对接下来的具体实现还不是很清晰,希望各位大牛指导一下我正确的方向,如果能有参考资料或者相关案例就更好了。