Rails ActiveSupport::Concern 源码分析

lanzhiheng · March 19, 2018 · Last by zhandao replied at March 20, 2018 · 3523 hits

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

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

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

Reply to jasl

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

Reply to zhandao

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

Reply to jasl

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

Reply to zhandao

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

Reply to jasl

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

Reply to zhandao

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

Reply to jasl

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

Reply to jasl

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

Reply to lanzhiheng

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

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

Reply to jasl

Get 抽空去研究一下。

Reply to zhandao

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

You need to Sign in before reply, if you don't have an account, please Sign up first.