From: Regis d'Aubarede Date: 2010-06-04T03:28:56+09:00 Subject: Re: dynamicaly define a method which body can contain yield Here a (partial) solution : class B def p1 ; puts "p1"; end def self.add_tag(name,&blk) define_method(name) do |*args,&blocs| instance_eval { blk.call(*args,&blocs) } end end end b=B.new b.instance_eval { B.add_tag("p5") { |*a,&bb| p1 ; bb.call(*a) ; p1 } } b.p5(1,2,3) {|*a| puts "in bloc p5 : #{a.inspect}" } > p1 > in bloc p5 : [1, 2, 3] > p1 'b.instance_eval' seem necessary for that p1() call in add_tag() bloc bind to 'b' instance Thank you , -- Posted via http://www.ruby-forum.com/.