[#16113] Strange idea... exporting from a scope — "Hal E. Fulton" <hal9000@...>

Hello...

33 messages 2001/06/01

[#16364] Re: Garbage Collection? — Michael Davis <mdavis@...>

Windows 2000 and linux (RedHat 6.2). I have run these tests on both OSs.

12 messages 2001/06/09

[#16400] Symbolic Computation III — Mathieu Bouchard <matju@...>

14 messages 2001/06/11

[#16502] Playing with Ruby Syntax (was: Initial thoughts about Ruby From a Smalltalk Programmer) — jweirich@...

Michael> Hi Everyone, I have to say I'm utterly fascinated by Ruby

9 messages 2001/06/15

[#16661] Problem running irb with Ruby 1.6.4 under FreeBSD 4.0 — Bob Alexander <balexander@...>

I've installed Ruby 1.6.4 on a FreeBSD 4.0 machine, and get the

11 messages 2001/06/20

[#16686] opening db files made by apache dbmmanage — Fritz Heinrichmeyer <fritz.heinrichmeyer@...>

14 messages 2001/06/21

[#16801] rb_define_class() vs Class.new() — Kero van Gelder <kero@...4050.upc-d.chello.nl>

Hi,

18 messages 2001/06/23
[#16802] Re: rb_define_class() vs Class.new() — ts <decoux@...> 2001/06/23

>>>>> "K" == Kero van Gelder <kero@d4050.upc-d.chello.nl> writes:

[#16841] RE: national characters is strings — "Aleksei Guzev" <aleksei.guzev@...>

Next week I'll try to rebuild Ruby with Unicode strings. But it would be

15 messages 2001/06/25
[#16842] Re: national characters is strings — matz@... (Yukihiro Matsumoto) 2001/06/25

Hi,

[#16843] Re: national characters is strings — "Aleksei Guzev" <aleksei.guzev@...> 2001/06/25

That's good enough. But I'm afraid this could ( not would ) cause string

[#16868] Something strange with Ruby's inheritance mechanism — Eric Jacoboni <jaco@...>

As Ruby beginner, i try some "canonical" OO scripts. Doing so, I've

14 messages 2001/06/25
[#16873] RE: Something strange with Ruby's inheritance mechanism — "Aleksei Guzev" <aleksei.guzev@...> 2001/06/26

[#16879] Re: Something strange with Ruby's inheritance mechanism — Mathieu Bouchard <matju@...> 2001/06/26

On Tue, 26 Jun 2001, Aleksei Guzev wrote:

[#16869] Something strange with Ruby's inheritance mechanism — Eric Jacoboni <jaco@...>

As Ruby beginner, i try some "canonical" OO scripts. Doing so, I've

12 messages 2001/06/25

[#16881] — "Aleksei Guzev" <aleksei.guzev@...>

32 messages 2001/06/26
[#16916] Re: Method overloading (option) Was: Re: — "Wayne Blair" <wayne.blair@...> 2001/06/26

[#16920] Re: Method overloading (option) Was: Re: — matz@... (Yukihiro Matsumoto) 2001/06/26

Hi,

[#16888] finalizers, destructors and whatnot — "David Leal" <david@...>

Hi all,

16 messages 2001/06/26

[#17037] keeping an Exception object alive — David Alan Black <dblack@...>

Hello --

19 messages 2001/06/28
[#17055] Re: keeping an Exception object alive — matz@... (Yukihiro Matsumoto) 2001/06/29

Hi,

[#17066] RCR: Exception methods (was: Re: Re: keeping an Exception object alive) — David Alan Black <dblack@...> 2001/06/29

Hello --

[#17076] Re: RCR: Exception methods (was: Re: Re: keeping an Exception object alive) — matz@... (Yukihiro Matsumoto) 2001/06/29

Hi,

[#17079] Re: RCR: Exception methods (was: Re: Re: keeping an Exception object alive) — David Alan Black <dblack@...> 2001/06/29

Hello --

[#17138] Re: RCR: Exception methods (was: Re: Re: keeping an Exception object alive) — matz@... (Yukihiro Matsumoto) 2001/07/02

Hi,

[#17141] Re: RCR: Exception methods (was: Re: Re: keeping an Exception object alive) — David Alan Black <dblack@...> 2001/07/02

Hello --

[#17142] Re: RCR: Exception methods (was: Re: Re: keeping an Exception object alive) — ts <decoux@...> 2001/07/02

>>>>> "D" == David Alan Black <dblack@candle.superlink.net> writes:

[ruby-talk:16579] Re: Trapping method defs

From: Robert Feldt <feldt@...>
Date: 2001-06-17 21:56:05 UTC
List: ruby-talk #16579
On Sat, 16 Jun 2001, Mathieu Bouchard wrote:

> > ? RCR? Or one can easily get it from 'caller' as in my previously
> > proposed call_stack RCR...
> 
> Not sure how you'd do that... I don't think "def" will appear in the
> call stack. I expect something weird to happen, like a half-blank
> entry or a missing entry or two half-missing entries (e.g. Ruby code
> appears to be calling method_added itself...) but that's pure speculation.
> 
Ok. Matz?

> > I sure hope this is already supported in some way I've missed...
> 
> I have played a bit with #method_added a few weeks ago...
> 
> def Integer.method_added(sym)
> 	if sym==:%
> 		puts "I find your lack of faith... disturbing"
> 		Process.kill 11, Process.pid
> 	end
> end
> 
> but then, Hurst and I figured out that:
> 
> a. #method_added can be redefined or removed without your #method_added
> being actually called.
> 
> b. unless you freeze Module ;-)
> 
> c. doesn't prevent anyone from def'ing a singleton #method_added without
> you getting to know anything about it. 
> 
Can't I use Object.singleton_method_added?

> d. you still don't have info about the replaced method...
> 
> sorry, haven't pushed this further.
> 
Maybe if you continue on something like:

class Object
  def Object.method_added(methodId)
    puts "ORG: Added method #{self.inspect}##{methodId.id2name}"
  end
  @@defining_method_added = false
  def Object.singleton_method_added(methodId)
    if methodId == :method_added
      if @@defining_method_added
	@@defining_method_added = false
      else
	puts "Added singleton method #{self.inspect}.#{methodId.id2name}"
	@@defining_method_added = true
	# Reinstall our method_added!
	self.instance_eval <<-'EOC'
	  alias new_method_added method_added
	  def method_added(methodId)
	    new_method_added(methodId)
	    puts "REI: Added method #{self.inspect}##{methodId.id2name}"
          end
        EOC
      end
     else
       unless self == Object and methodId == :singleton_method_added
	 puts "Added singleton method #{self.inspect}.#{methodId.id2name}"
       end
     end
  end
end

class C
  def im1
  end
  def C.method_added(methodId)
    puts "C: Added method #{self.inspect}##{methodId.id2name}"
  end
  def im2
  end
end

but you'll have to reinstall the singleton_method_added in
singleton_method_added if someone tries to redef
Object.singleton_method_added. And then they can probably use undef_method
and/or remove_method anyway and on it goes...

Maybe there is not a fully "safe" way but my alternative is to
use a trace func and then it wont work if someone sets another trace
func... (and I can't afford the typical factor 50 slowdown of using
trace funcs).

Anyway thanks for your input!

/Robert

In This Thread