rails4里的ActiveSupport::Concern的产生主要是为了优化代码,将重复的代码片段化引入文件中。这样代码的可读性和维护性就提高了不少。
其实也可以通过定义typical module的方式来实现去除重复代码(即:mixins方式),但这样有局限性,module多层嵌套时,因为依赖性,当使用的方法在引入的module中未被定义时,就会产生报错。
而ActiveSupport::Concern可以很好的解决这种依赖性,ActiveSupport::Concern会延迟加载included hooks,直到 a module is included into a non-ActiveSupport::Concern,再使用 ActiveSupport::Concern重新下定义。
下面是介绍 ActiveSupport::Concern用法和源码解释:
1、http://api.rubyonrails.org/classes/ActiveSupport/Concern.html#method-i-class_methods
2、
http://engineering.appfolio.com/2013/06/17/ruby-mixins-activesupportconcern/
3、
http://www.zhubert.com/blog/2013/06/13/activesupport-concern-digression/
4、https://ruby-china.org/topics/19812