define_methodで定義したメソッドへのブロック

って無視されちゃうのかな?

irb(main):001:0> class A
irb(main):002:1>   define_method('foo') do
irb(main):003:2*     puts  "block_given? ==> #{block_given?.inspect}"
irb(main):004:2>     # lambda.call
irb(main):005:2*     # ==> ArgumentError: tried to create Proc object without a block
irb(main):006:2*     #     がraiseされる。Proc.new.call, proc.call でも同じ。
irb(main):007:2*   end
irb(main):008:1>
irb(main):009:1*   def bar
irb(main):010:2>     puts  "block_given? ==> #{block_given?.inspect}"
irb(main):011:2>   end
irb(main):012:1>
irb(main):013:1* end
=> nil
irb(main):014:0> a1 = A.new
=> #<A:0x2ecdec8>
irb(main):015:0> a1.foo
block_given? ==> false
=> nil
irb(main):016:0> a1.foo{"aaa"}
block_given? ==> false
=> nil
irb(main):017:0> a1.bar
block_given? ==> false
=> nil
irb(main):018:0> a1.bar{"aaa"}
block_given? ==> true
=> nil
irb(main):019:0>

http://www.ruby-lang.org/ja/man/?cmd=view;name=FAQ%3A%3A%A5%D6%A5%ED%A5%C3%A5%AF%C9%D5%A4%AD%A5%E1%A5%BD%A5%C3%A5%C9%B8%C6%A4%D3%BD%D0%A4%B7
を見て、内部でproc, lambda, Proc.new を使ったらいけるかな?とか思ったけど、これはmodule_evalでやるべきなの?

ちなみに

define_method('foo') do |&proc|

だとsyntax errorになっちゃう。