Newbie - error while trying subclass

I am trying to subclass in my code (see below). But I am getting the
following error while running the code.

song.rb:12: class/module name must be CONSTANT
class karaokeSong < Song
                   ^
song.rb:23: warning: don't put space before argument parentheses

Not able to figure why "<" is not being accepted for subclassing. I am
using 1.8.6 version on windows. Pls. help

···

-----------------------------------------------------------------------------------------
class Song
  def initialize (name, artist, duration)
    @name = name
    @artist = artist
    @duration = duration
   end
   def to_s
    "Song: #{@name}--#{@artist} #{@duration}"
    end
end

class karaokeSong < Song
  def initialize (name, artist, duration, lyrics)
    super(name, artist, duration)
    @lyrics = lyrics
  end
end

aSong = karaokeSong.new ("Bicyclops", "Fleck", 260, "And, now the")
puts aSong.inspect
puts aSong.to_s

Hi --

···

On Mon, 15 Dec 2008, Rubystudent wrote:

I am trying to subclass in my code (see below). But I am getting the
following error while running the code.

song.rb:12: class/module name must be CONSTANT
class karaokeSong < Song
                  ^

karaokeSong isn't a constant. Try KaraokeSong (uppercase 'K').

David

--
David A. Black / Ruby Power and Light, LLC
Ruby/Rails consulting & training: http://www.rubypal.com
Coming in 2009: The Well-Grounded Rubyist (http://manning.com/black2)

Rubystudent wrote:

I am trying to subclass in my code (see below). But I am getting the
following error while running the code.

song.rb:12: class/module name must be CONSTANT
class karaokeSong < Song
                   ^
song.rb:23: warning: don't put space before argument parentheses

Not able to figure why "<" is not being accepted for subclassing. I am
using 1.8.6 version on windows. Pls. help

What version of ruby are you using?

See below for changes:

class karaokeSong < Song

class KaraokeSong < Song

aSong = karaokeSong.new ("Bicyclops", "Fleck", 260, "And, now the")

aSong = KaraokeSong.new("Bicyclops", "Fleck", 260, "And, now the")

That should remedy the problem.

···

--
Tim Greer, CEO/Founder/CTO, BurlyHost.com, Inc.
Shared Hosting, Reseller Hosting, Dedicated & Semi-Dedicated servers
and Custom Hosting. 24/7 support, 30 day guarantee, secure servers.
Industry's most experienced staff! -- Web Hosting With Muscle!

Try capitalizing karaokeSong

the first error is complaining about the class name not being CONSTANT.

···

On Dec 14, 2008, at 2:17 PM, Rubystudent wrote:

I am trying to subclass in my code (see below). But I am getting the
following error while running the code.

song.rb:12: class/module name must be CONSTANT
class karaokeSong < Song
                  ^
song.rb:23: warning: don't put space before argument parentheses

Not able to figure why "<" is not being accepted for subclassing. I am
using 1.8.6 version on windows. Pls. help

-----------------------------------------------------------------------------------------
class Song
def initialize (name, artist, duration)
   @name = name
   @artist = artist
   @duration = duration
  end
  def to_s
   "Song: #{@name}--#{@artist} #{@duration}"
   end
end

class karaokeSong < Song
def initialize (name, artist, duration, lyrics)
   super(name, artist, duration)
   @lyrics = lyrics
end
end

aSong = karaokeSong.new ("Bicyclops", "Fleck", 260, "And, now the")
puts aSong.inspect
puts aSong.to_s

David, Tim - Thanks a lot.
It worked.

Sunil