당신은 비슷한 것을 사용할 수 있습니다 인스턴스는 위임으로 평가합니다 패턴, 사용 - 예를 들어 - in 사본 보석:
def batman(task, &block)
@original_self = eval('self', block.binding)
puts "Batman: #{task} - done"
instance_exec('feed cat', &block)
@news << task
end
private
def method_missing(method, *args, &block)
if @original_self
@original_self.send(method, *args, &block)
else
super
end
end
이 접근법에서, 당신이 블록 내부에있는 내부 (암시 적 수신기 포함)를 호출 할 때 batman
방법은의 맥락에서 호출됩니다 SuperHeros
사례. 그러한 방법이 없으면 통화가 진행됩니다 ( method_missing
) 원본 블록으로 self
.