# Sleep

**URL:** <https://www.ruby-forum.com/t/sleep/155994>\
**Category:** Ruby\
**Created:** [December 19, 2008, 2:30am UTC](https://www.ruby-forum.com/t/sleep/155994 "2008-12-19T02:30:18Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![asetzler](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/a/ac91a4/32.png) [@asetzler](https://www.ruby-forum.com/u/asetzler)\
**Post date:** [December 19, 2008, 2:30am UTC](https://www.ruby-forum.com/t/sleep/155994/1 "2008-12-19T02:30:18Z")

</div>

This program is very simple. It is suppose to load in the text file,  
load  
each character into an array, then print out the array one letter at a  
time. It is supposed to wait 1 second each time it prints. This  
freezes  
every time I run it. Any ideas?

Adam

class Slow\_Array

```
def array_split
    @f = File.open('Text_for_TextReader.txt','r') do |f|
        f.gets.scan(/\w/)
    end
end

def print_and_wait
    @f.each {
        |i|
        print i
        sleep 1
    }
end

```

end

#-------------------------------------------------

# Main logic

TextReader = Slow\_Array.new

# Bring file into program

TextReader.array\_split

# Print each character, waiting one second in between each printing

TextReader.print\_and\_wait

---

<div class="post-metadata">

**Author:** ![asetzler](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/a/ac91a4/32.png) [@asetzler](https://www.ruby-forum.com/u/asetzler)\
**Post date:** [December 19, 2008, 3:10am UTC](https://www.ruby-forum.com/t/sleep/155994/2 "2008-12-19T03:10:40Z")

</div>

On Fri, Dec 19, 2008 at 10:21 AM, Adam S. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)  
wrote:

> def array\_split  
> }
> 
> # Print each character, waiting one second in between each printing
> 
> TextReader.print\_and\_wait

You can either:

$stdout.sync = true

or:

class SlowArray  
def slow\_each  
File.open(‘Text\_for\_TextReader.txt’) do |file|  
while line = file.gets  
puts line  
sleep 1  
end  
end  
end

SlowArray.new.slow\_each

^ manveru

---

<div class="post-metadata">

**Author:** ![asetzler](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/a/ac91a4/32.png) [@asetzler](https://www.ruby-forum.com/u/asetzler)\
**Post date:** [December 19, 2008, 2:49am UTC](https://www.ruby-forum.com/t/sleep/155994/3 "2008-12-19T02:49:01Z")

</div>

On 19.12.2008, at 01:21 , Adam S. wrote:

> class Slow\_Array  
> print i
> 
> # Bring file into program
> 
> TextReader.array\_split
> 
> # Print each character, waiting one second in between each printing
> 
> TextReader.print\_and\_wait
> 
> –  
> Put your computer to work.  
> [www.volunteerathome.com](http://www.volunteerathome.com)

It doesn’t freeze, but the output is buffered so it appears that way.  
try adding a flush:

print i  
STDOUT.flush  
sleep 1

einarmagnus

---

<div class="post-metadata">

**Author:** ![asetzler](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/a/ac91a4/32.png) [@asetzler](https://www.ruby-forum.com/u/asetzler)\
**Post date:** [December 19, 2008, 9:55pm UTC](https://www.ruby-forum.com/t/sleep/155994/4 "2008-12-19T21:55:29Z")

</div>

STDOUT.flush  
Did exactly what I wanted and it was an easy fix. I would have never  
figured that out. Thank you.

Adam
