oop/module_using_parens.rb

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

Target = Class.new do
  def describe
    "plain"
  end
end

Adjustment = Module.new do
  refine Target do
    def describe
      "refined"
    end
  end
end

returned = nil
host = Module.new do
  returned = using(Adjustment)
end
puts((returned == host).inspect)

Module.new do
  def self.defined_before(object)
    object.describe
  end

  using(Adjustment)

  puts(defined_before(Target.new).inspect)

  def self.defined_after(object)
    object.describe
  end

  puts(defined_after(Target.new).inspect)
  puts(Target.new.describe.inspect)
end

puts(Target.new.describe.inspect)

Output:

true
"plain"
"refined"
"refined"
"plain"