Rails ActiveSupport::Concern 源码分析

lanzhiheng · 2018年03月19日 · 最后由 zhandao 回复于 2018年03月20日 · 3537 次阅读

https://www.jianshu.com/p/de6a62148644

分析 ActiveSupport::Concern 模块的源码后,做了些总结。

另外可以看一下 Gitlab 对 Concern 做了点 hack 来支持 prepend

jasl 回复

有没有 Gitlab 的源码分析可以推荐一下?

zhandao 回复

没有... 我貌似都不知道有类似的文章。我一般是看到哪些功能我需要、感兴趣,就研究一下

jasl 回复

嗯。那只有从开发者文档看起了。

zhandao 回复

其实多用用不同产品就好啦,有很多功能点都是相通的,比如用户登录注册,高级一点的比如权限管理、访问控制、还有多租户隔离之类。要读代码的话,先看文档跑起来然后扫一遍依赖和目录结构

jasl 回复

嗯嗯。其实我是想了解一下远端版本管理仓库是如何实现的 ...

zhandao 回复

那个我还真没研究过,应该是 git 有支持,然后 gitlab-shell 实现了相应的协议,这样入手应该就好了

jasl 回复

从架构看有一个重要组件 Gitaly。要执行 git 操作时,gitlab-shell 和 gitlab backend 都会和它通信。

jasl 回复

多谢推荐。Gitlab 的代码还没有研究过,我稍后找时间看看。我倒是对它整合了 Vue 这一点有点兴趣。

lanzhiheng 回复

昨天说的是这个 https://gitlab.com/gitlab-org/gitlab-ce/blob/master/config/initializers/0_as_concern.rb 支持了 prepend,可以更好地做 AOP 了

他们整合 VUE 的方式没啥好看的,因为现在有了 Webpacker,直接用这个是最好的,他们那个时候太早了

jasl 回复

Get 抽空去研究一下。

zhandao 回复

他们搞这么复杂是因为他们的业务复杂呀,实现远端仓库可以看看 B 大 几年前写的 https://ruby-china.org/topics/16295 就几十行

需要 登录 后方可回复, 如果你还没有账号请 注册新账号