From: Foo Date: 2004-07-18T00:53:26+09:00 Subject: Re: Having Trouble with IO.popen example Thank You:) That did the trick:) SA In article <40F931ED.6080008@yahoo.co.uk>, Mark Sparshatt wrote: > Foo wrote: > > >Hi- > > > >I am new to ruby and I am reading the SAMS "Teach yourself Ruby in 21 > >days" book. I've gotten to the part where the book discusses the > >operating system and Ruby. I'm having trouble with an example in the > >book and was hoping someone could help. The script is spinnertest.rb: > > > >#!/usr/bin/env ruby > > > >require 'spinner2' # Edit this line for different spinners > > > ># Our slow recursive Fibonacci function. > >def fib(n) (n<=2) ? 1 : (fib(n-2)+fib(n-1)) end > > > >print "Please wait while I calculate a large Fibonacci number. " > > > >animation = Spinner.new > >result = fib(28) > >animation.stop > > > >puts > >puts result > > > > > >The class is called spinner2.rb: > > > >class Spinner > > Baton = '\|/-' > > def initilaize > > > > > ^^^^^^ > this should be > def initialize > > > STDOUT.flush > > @child = IO.popen('-', 'w+') > > if @child.nil? > > rotation = 0 > > until select([$stdin], nil, nil, 0.2) > > STDERR.printf "%c\b", Baton[(rotation+=1) &3] > > end > > gets #read the 'stop' message > > STDERR.printf " \b" # erase the last Baton character > > exit! > > end > > end > > > > def stop > > @child.puts("stop yer rotation") # message content is unimportant > > @child.close > > end > >end > > > >When I run spinnertest.rb I get a blank screen for awhile, then after > >the calculation is complete I get the following: > > > >../spinner2.rb:18:in `stop': private method `puts' called for > >nil:NilClass (NoMethodError) > > from ./spinnertest.rb:12 > >Please wait while I calculate a large Fibonacci number. > > > >I am guessing that ruby is having trouble with 'puts' being used this > >way, but I do not understand why, nor, how to fix it. Can someone > >please help me with this item? > > > >:)Thanks. > > > >SA > > > > > > > >