我正在通过CodeSchool的RubyBits工作,我参加了一个练习,我只是不理解:“确保AtariLibrary类仅包含LibraryUtils模块并让ActiveSupport :: Concern请注意加载它的依赖关系,然后重构LibraryUtils上的self.included方法以使用包含的方法。“使用扩展ActiveSupport :: Concern
module LibraryLoader
extend ActiveSupport::Concern
module ClassMethods
def load_game_list
end
end
end
module LibraryUtils
def self.included(base)
base.load_game_list
end
end
class AtariLibrary
include LibraryLoader
include LibraryUtils
end
基于该解决方案(如下图),好像ActiveSupport::Concern
并不需要加载依赖护理 - 您需要包括LibraryUtils内LibraryLoader。
您能帮我理解ActiveSupport::Concern
正在做什么,以及为什么需要在两个模块中通过extend
调用?
module LibraryLoader
extend ActiveSupport::Concern
module ClassMethods
def load_game_list
end
end
end
module LibraryUtils
extend ActiveSupport::Concern
include LibraryLoader
#result of refactoring the self.included method
included do
load_game_list
end
end
class AtariLibrary
include LibraryUtils
end
谢谢!