[lnkForumImage]
TotalShareware - Download Free Software

Confronta i prezzi di migliaia di prodotti.
Asp Forum
 Home | Login | Register | Search 


 

Forums >

comp.lang.ruby

Override object initialization, add a filepath attribute.

warhero

8/27/2007 4:45:00 AM

Is it possible to override initializations so that anytime an object is
created there is a "filepath" attribute put on it?

maybe?

class Object
def initialize
super
class << self
attr_accessor :filepath
end
self.filepath = $0
end
end

See what i'm going for? Any ideas on how to get away with this?

Thanks.
--
Posted via http://www.ruby-....

4 Answers

Alex Gutteridge

8/27/2007 5:33:00 AM

0

On 27 Aug 2007, at 13:45, Aaron Smith wrote:

> Is it possible to override initializations so that anytime an
> object is
> created there is a "filepath" attribute put on it?
>
> maybe?
>
> class Object
> def initialize
> super
> class << self
> attr_accessor :filepath
> end
> self.filepath = $0
> end
> end
>
> See what i'm going for? Any ideas on how to get away with this?

Do you want the name of the file each object is defined in? I think
you want __FILE__ instead of $0 in that case since $0 is always the
top level Ruby program.

Also there is no superclass for Object so super#initialize won't work
I think. This maybe gets closer - but still doesn't actually work:

[alexg@powerbook]/Users/alexg/Desktop(55): cat main.rb
require 'foo'
require 'filepath'

f = Foo.new
p f.filepath
[alexg@powerbook]/Users/alexg/Desktop(56): cat foo.rb
class Foo
end
[alexg@powerbook]/Users/alexg/Desktop(57): cat filepath.rb
class Object
attr_accessor :filepath
end

class Class
alias :old_new :new
def new(*args)
result = old_new(*args)
result.filepath = __FILE__
result
end
end
[alexg@powerbook]/Users/alexg/Desktop(58): ruby main.rb
"./filepath.rb"

We would of course like it to output 'foo.rb' if I understand you right.

Alex Gutteridge

Bioinformatics Center
Kyoto University



warhero

8/27/2007 6:07:00 AM

0

Great, this will work perfectly. thanks again
--
Posted via http://www.ruby-....

Alex Gutteridge

8/27/2007 6:40:00 AM

0

On 27 Aug 2007, at 15:06, Aaron Smith wrote:

> Great, this will work perfectly. thanks again
> --
> Posted via http://www.ruby-....

???

But it doesn't work! In my 'solution' the filepath attribute is
always set to 'filepath.rb' instead of the name of the file the
object is defined in. It's useless as far as I can see! Am I
completely missing what you wanted?

Alex Gutteridge

Bioinformatics Center
Kyoto University



warhero

8/27/2007 6:56:00 AM

0

Alex Gutteridge wrote:
> On 27 Aug 2007, at 15:06, Aaron Smith wrote:
>
>> Great, this will work perfectly. thanks again
>> --
>> Posted via http://www.ruby-....
>
> ???
>
> But it doesn't work! In my 'solution' the filepath attribute is
> always set to 'filepath.rb' instead of the name of the file the
> object is defined in. It's useless as far as I can see! Am I
> completely missing what you wanted?
>
> Alex Gutteridge
>
> Bioinformatics Center
> Kyoto University

OH yeah, sorry, I just assumed that would work. I am wanting the file
path where the class is defined, not just the top level ruby script that
is running.. I'll give this a shot tomorrow and see if I can figure it
out based on what you've written.
--
Posted via http://www.ruby-....