我正在通過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
謝謝!