I can't see anything wrong.  Does this work?

list.append(Song.new('title1', 'artist1', 1))

It would help me if you wrote a sample program that caused the error and 
sent it to me.  I can then try to figure out what's going on.


On Wed, Feb 19, 2003 at 09:31:21AM +0900, reavey wrote:
> hi
> I get an error
> "NameError: undefined method 'push' for nil from append"
> as I'm working thru the Prag prog ruby book.
> """We'll start our class with a basic initialize method, which creates 
> the Array we'll use to hold our songs and store a reference to it in the 
> instance variable @songs
> 
> class SongList
>    def initialize
>      @songs = Array.new
>    end
> end
> 
> The SongList#append method adds the given song to the end of teh @songs 
> array. It also
> returns self, a reference to the current SongList object. This is a 
> useful convention, as it allows us to chain together multiple calls to 
> appand...
> 
> class Songlist
>       def append(aSong)
>        @songs.push(aSong)
>        self
>    end
> end
> 
> list = SongList.new
> list.
>    append(Song.new('title1', 'artist1', 1)).
>    append(Song.new('title2', 'artist2', 2))      """
> 
> reports the error.
> I've worked through all the example code and have been very impressed. 
> It is
> very instructive and is the only book I've seen that tries to teach 
> using a real model.
> 
> I'm writting all the code in irb.  Also, a test like
> cSong = Song.new('title', 'artist', 245)
> works fine.
> 
> 
> 
> 

-- 
Daniel Carrera
Graduate Teaching Assistant.  Math Dept.
University of Maryland.  (301) 405-5137