module SpinningWheel def self.define(&block) DSL.run(block) end class DSL def self.run(block) new.instance_eval(&block) end def fabric(name:, class_name:, &block) fabric = SpinningWheel::Fabric. new(name: name, class_name: class_name, &block) SpinningWheel.register_fabric(fabric) end end end