Forum: Ruby Beginner question on classes on different files

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
Edgard R. (Guest)
on 2006-01-31 18:15
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
Tanner B. (Guest)
on 2006-01-31 18:21
(Received via mailing list)
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'

--
Stefan M. (Guest)
on 2006-01-31 18:36
(Received via mailing list)
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?
Edgard R. (Guest)
on 2006-01-31 20:25
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
Eero S. (Guest)
on 2006-01-31 22:04
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
Edgard R. (Guest)
on 2006-01-31 22:21
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
This topic is locked and can not be replied to.