Interception method_added for blocks


is it possible to somehow intercept method_added
for defs defined within a block?

y = {
def x

for example in the code above who gets notfied of the existance of x?

ciao robertj

class << Proc
alias_method :_new, :new
def new( *args, &blk )
puts “Intercept…”
_new( *args, &blk )

You can’t do it with method_added becuase it is a post hook --the
method has already been created.

Ah misread that a bit. The code won’t help, so ignore that.

Actual answer: It depends on where you evaluate the code.

irb(main):001:0> class A
irb(main):002:1> def self.method_added( sym )
irb(main):003:2> p “A##{sym}”
irb(main):004:2> end
irb(main):005:1> end
=> nil
irb(main):006:0> class B
irb(main):007:1> def self.method_added( sym )
irb(main):008:2> p “B##{sym}”
irb(main):009:2> end
irb(main):010:1> end
=> nil
irb(main):011:0> d ={ def x; end }
=> #Proc:[email protected]:11(irb)
irb(main):012:0> A.class_eval &d
=> nil
irb(main):013:0> B.class_eval &d
=> nil

This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.

| Privacy Policy | Terms of Service | Remote Ruby Jobs