【发布时间】:2013-02-01 18:01:45
【问题描述】:
我正在研究 CodeSchool 的 RubyBits,我遇到了一个我不理解的练习:“确保 AtariLibrary 类仅包含 LibraryUtils 模块并让 ActiveSupport::Concern 负责加载它依赖关系。然后,重构 LibraryUtils 上的 self.included 方法以使用包含的方法。"
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
谢谢!
【问题讨论】:
标签: ruby activesupport