Beginner question on classes on different files

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/.

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

···

On 1/31/06, Edgard Riba <elriba@rimith.com> wrote:

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===
tanner.burson@gmail.com
http://tannerburson.com <---Might even work one day...

Edgard Riba wrote:

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?

Works for me under linux and windows.

Prints

Hello, World2
Hello, World
Press RETURN

What exactly does not work?

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

···

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

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

···

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

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

···

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