Hello all, I'm having some trouble with extending an existing Ruby class in order to add functionality. Here's some example code: class Graph .... .... def subgraph(*args) graph = self.new .... .... return graph end end class AwesomeGraph < Graph .... .... def do_something .... .... end end g = AwesomeGraph.new a = g.subgraph(g.nodes) a.do_something // ERROR! No Graph#do_something exists! I was hoping 'self.new' would take into account the derived class used upon creation, but it doesn't. Any suggestions? -- Thanks! Bryan
on 2009-03-18 15:27
on 2009-03-18 15:36
2009/3/18 Bryan Richardson <email@example.com> > .... > .... > return graph > end > end This looks suspect, 'self' in this method looks like it will refer to the Graph instance, not the Graph class. Try self.class.new instead.
on 2009-03-18 15:50
Yep... that worked. :) -- Thanks! Bryan James Coglan wrote: > 2009/3/18 Bryan Richardson <firstname.lastname@example.org> > >> .... >> .... >> return graph >> end >> end > > > > This looks suspect, 'self' in this method looks like it will refer to > the > Graph instance, not the Graph class. Try self.class.new instead.