Mon Jun 25
#
“ I’ve just gone down a bytecode k-hole. I’m command-I-ing everything in sight. It really is turtles all the way down. ”
Marcel on exploring Squeak’s implementation (in itself)
#
Module bundles
module ModuleBundle def self.new(*args, &block) module_bundle = Module.new(*args, &block) module_bundle.module_eval do callbacks_to_bubble_up = { :included => :include, :extended => :extend } bubble_up = lambda do |callback, method| module_eval(<<-EVAL, __FILE__, __LINE__) def self.#{callback}(klass) included_modules.each do |included_module| klass.send(:#{method}, included_module) end end EVAL end callbacks_to_bubble_up.each do |callback, method| bubble_up[callback, method] end end module_bundle end end UnixDetectionTools = ModuleBundle.new do include NetworkDetection include DiskDetection include HardwareDetection include OperatingSystemVersionDetection end class UnixWorker < Worker include UnixDetectionTools end