oop/clone_singleton_super.rb

tests/_examples/oop/clone_singleton_super.rb in the metorex repository.

module Counting
  def total(values) = values.sum
end

ledger = Object.new
ledger.singleton_class.include(Counting)
ledger.singleton_class.define_method(:total) { |values| super(values) + 1 }
copy = ledger.clone
p copy.total([1, 2])
p copy.method(:total).owner == copy.singleton_class

module Reporting
  def heading = "report"
end
copied_module = Reporting.dup
p copied_module.instance_method(:heading).owner == copied_module

Output:

4
true
true