On 5/25/09, Tom Ricks <carrottop123 / gmail.com> wrote:
> Well, I'm not really sure. The intent is to have a repetitive code ran
> at quite a few different times with changing variables. The sleep option
> doesn't really seem reliable and realistic, although its the only thing
> so far. The code I can come up with is this:
>
> class TestClass
>   def testtime(timetorun)
>     timetorun = @timetorun
>     sleep(1) while Time.now.strftime("%I:%M:%S %p") < ("#{@timetorun}")
>     #Somewhere code to run when Time.now = timetorun
>   end
> end
> test = TestClass.new
> test.testtime("11:04:40 AM")
>
> The problems are #1. I don't know how to link the time code to the code
> to be run when the time code is fulfilled.

I think procs are the feature you want to know about here.

> #2. If I have a list of times
> to be run, and one time is out of order, it will just sleep past the out
> of order time.

so, sort 'em.

> #3. While the code is waiting for a certain time, with
> sleep, it cannot do anything else.

Select, or threads, or some kind of event driven system like
EventMachine are the usual solutions to this problem. I forgot to
mention select before.

> Is there a way that I can run code
> that will watch for a time to be fulfilled on many levels instead of
> just waiting until a time, moving on and waiting for the next? Is it
> possible to do something like this:
>
> when test.testtime is true/finished?
>  run some code
> end
>

Well, in general what you want here is a timer. It's very easy to
write your own; it sounds like you're close now, you just need to
learn about sort.

>> In some cases, you might be able
>> to put your sleep and code_to_be_delayed in another thread, but then
>> you run into the problem of thread synchronization.
>
> How would I do this?

Hmm, you have some learning to do. Including how to find information
about the standard library. I suggest you make friends with ri, which
is the command-line tool that displays stdlib documentation. Google
can also be very helpful. You also need some general background on
ruby and programming concepts; I'd suggest the book 'programming
ruby'. There's a free version of an old edition online.