Beginner question on classes on different files


#1

Hi,
I’m beginning to work with ruby and I have a conceptual problem. Let’s
say I have two files:

hello2.rb:
class Hello2
attr_reader :msg
def initialize
@msg = “Hello, World2”
end
end

and hello.rb

require ‘hello2.rb’
class Hello
attr_reader :msg
def initialize
@msg = “Hello, World”
end
end
h = Hello.new()
h2 = Hello2.new()
puts h2.msg
puts h.msg
print “Press RETURN”
$stdin.gets

This is obviously a conceptual excercise. I want to use class
“Hello2” in my hello.rb code. However this doesn’t compile.

What is wrong with this code? How is something like this done in Ruby?
Thansk, Edgard


#2

On 1/31/06, Edgard R. removed_email_address@domain.invalid wrote:

end

end
What is wrong with this code? How is something like this done in Ruby?
Thansk, Edgard

Drop the .rb from you’re require line. So it should be
require ‘hello2’


#3

Edgard R. wrote:

end
h = Hello.new()
h2 = Hello2.new()
puts h2.msg
puts h.msg
print “Press RETURN”
$stdin.gets

This is obviously a conceptual excercise. I want to use class
“Hello2” in my hello.rb code. However this doesn’t compile.

What is wrong with this code? How is something like this done in Ruby?

Works for me under linux and windows.

Prints

Hello, World2
Hello, World
Press RETURN

What exactly does not work?


#4

Hi Stefan,

I’m using FreeRuby, and I’m getting intermitent errors.

This is the error I get

ruby c:/ruby/samples/hello.rb
c:/ruby/samples/hello.rb:11: parse error, unexpected tIDENTIFIER,
expecting $
h2 = Hello2.new()^Mputs h2.msg^M
^

However, I placed semi-colons (’;’) after each line and everything
compiled fine and ran with expected results:

h = Hello.new();
h2 = Hello2.new();

puts h2.msg;
puts h.msg;
print “Press RETURN”;
$stdin.gets;

Seems like some kind of problem with the parser. Maybe I have
something setup wrong with respect to the end of line character or
something like that…

Thanks,
Edgard


#5

Edgard R. wrote:

Hi Stefan,

I’m using FreeRuby, and I’m getting intermitent errors.

This is the error I get

ruby c:/ruby/samples/hello.rb
c:/ruby/samples/hello.rb:11: parse error, unexpected tIDENTIFIER,
expecting $
h2 = Hello2.new()^Mputs h2.msg^M
^

This looks like UNIX-style linebreaks (\n)
that Windows does not interpret correctly.

However, I placed semi-colons (’;’) after each line and everything
compiled fine and ran with expected results:

h = Hello.new();
h2 = Hello2.new();

puts h2.msg;
puts h.msg;
print “Press RETURN”;
$stdin.gets;

Seems like some kind of problem with the parser. Maybe I have
something setup wrong with respect to the end of line character or
something like that…

There may be a setting in your editor that toggles
the linebreak mode. I actually do not recall this
having been a problem but it has been a while since
I did any ruby development on Windows.

Thanks,
Edgard

E


#6

Hi Eero,

This looks like UNIX-style linebreaks (\n)
that Windows does not interpret correctly.

This is what it was… I don’t know why they were in there instead of
CRLF pairs, but I found a way in FreeRide to show the end of line
markers and was able to remove al single CR, and everything compiles
fine now.

Thanks to all,
Edgard