oop/module/append_features_hook.rb
tests/_examples/oop/module/append_features_hook.rb in the metorex repository.
m = Module.new do
def self.append_features(mod)
$appended_to = mod
end
end
c = Class.new do
include m
end
puts $appended_to.equal?(c)
frozen = Module.new.freeze
begin
Module.new.send :append_features, frozen
rescue FrozenError
puts "frozen ok"
end
a = Module.new
b = Module.new
b.send :append_features, a
begin
a.send :append_features, b
rescue ArgumentError
puts "cyclic ok"
end
stub = Module.instance_method(:append_features)
begin
stub.bind(Class.new).call(Module.new)
rescue TypeError
puts "rebind ok"
end
Output:
true
frozen ok
cyclic ok
rebind ok