require 'contextr' require 'pp' module Address layer :info def display end attr_accessor :address info.post :display do puts "Address: #{address}" end def beep(*args) puts "beeped #{args.inspect}" end info.claim :beep end class Person attr_accessor :name layer :employment attr_accessor :employer employment.claim :employer, :"employer=" def display puts "Person" puts "Name: #{name}" end employment.post :display do puts "Employer" puts "Name: #{employer}" end # include at the end not to drop redefinitions include Address end p Address.private_instance_methods.grep(/\d\d\d/) p Person.private_instance_methods.grep(/\d\d\d/) pp ContextR::CONTEXTUALIZED_METHODS me = Person.new me.name = "Christian Neukirchen" me.display # p me.employer puts Dynamic.let :layers => [:employment, :info] do me.employer = "Wieland Gymnasium" me.address = "Biberach" me.display me.beep :foo end