Override object initialization, add a filepath attribute

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.

On 27 Aug 2007, at 13:45, Aaron S. wrote:

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:

[[email protected]]/Users/alexg/Desktop(55): cat main.rb
require ‘foo’
require ‘filepath’

f = Foo.new
p f.filepath
[[email protected]]/Users/alexg/Desktop(56): cat foo.rb
class Foo
end
[[email protected]]/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
[[email protected]]/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 G.

Bioinformatics Center
Kyoto University

Great, this will work perfectly. thanks again

On 27 Aug 2007, at 15:06, Aaron S. wrote:

Great, this will work perfectly. thanks again

Posted via http://www.ruby-forum.com/.

???

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 G.

Bioinformatics Center
Kyoto University

Alex G. wrote:

On 27 Aug 2007, at 15:06, Aaron S. wrote:

Great, this will work perfectly. thanks again

Posted via http://www.ruby-forum.com/.

???

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 G.

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.

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