NameError problem

Hi. I’m sure it’s been asked before, but I can’t find the specific
answer. Basically I am doing the following…

1.Created a ruby file Person.rb

class Person

def initialize(name,age)
@name = name
@age = age
end

def name
return @name
end

def age
return @age
end

end

  1. I then run it

ruby Person.rb

  1. Then when I try to instansiate a person object…

(in irb mode) p1 = Person.new(“John”,30)

I get the following error…

NameError: uninitialized constant Object::Person

I don’t understand what I’m missing.

Thanks

Step 2 won’t make your script available to irb. So until your script
does something else, step 2 won’t do anything.

Step 3, in irb you need to:

require ‘person’
p = Person.new(‘John’, 30)

Alternatively, you can invoke irb with the -r option:

$ irb -r yourlibrary

One more thing which you should know is that you do not need to specify
return statement if it’s the last statement of the method in ruby. So
instead of:

def name
return @name
end

You can write :

def name
@name
end

Mayank

and if your getter and setter is only generic you could use

attr_reader :name #for reading
attr_writer :name #for writing
attr_accessor :name #for both

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