Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Beginner question on classes on different files

2 views
Skip to first unread message

Edgard Riba

unread,
Jan 31, 2006, 11:15:27 AM1/31/06
to
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

--
Posted via http://www.ruby-forum.com/.


Tanner Burson

unread,
Jan 31, 2006, 11:19:18 AM1/31/06
to


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

--
> Posted via http://www.ruby-forum.com/.
>
>


--
===Tanner Burson===
tanner...@gmail.com
http://tannerburson.com <---Might even work one day...

Stefan Mahlitz

unread,
Jan 31, 2006, 11:34:22 AM1/31/06
to

Works for me under linux and windows.

Prints

> Hello, World2
> Hello, World
> Press RETURN

What exactly does not work?


Edgard Riba

unread,
Jan 31, 2006, 1:25:39 PM1/31/06
to
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,

Eero Saynatkari

unread,
Jan 31, 2006, 3:04:28 PM1/31/06
to
Edgard Riba 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

Edgard Riba

unread,
Jan 31, 2006, 3:22:02 PM1/31/06
to
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

0 new messages