Ruby performing 2nd loop, before finishing 1st loop

Hi,

My code is like this:

if (row.abc1== ‘pnc’)

  action1

end

if (abc2 == ‘hjayu’)

   action2

end

Now the probelm is, before finishing the action1, it is going to perform
action2 & resulting crashing the system.

what might be the problem, can somebody pls help

Thanks in advance
apr

Does action1 run on a different thread than the one the method was
called? Like:

def action1
Thread.new do
#your code here
end
end

Be wary that it might be that what happens inside action1 runs on a
different thread, just not explicitly like this, for example it might
call a library that runs its stuff on a separate thread. Could you show
more of what happens inside action1() ?


Andrea D.
http://github.com/bolthar/freightrain
http://usingimho.wordpress.com

Andrea D. wrote:

Does action1 run on a different thread than the one the method was
called? Like:

def action1
Thread.new do
#your code here
end
end

Be wary that it might be that what happens inside action1 runs on a
different thread, just not explicitly like this, for example it might
call a library that runs its stuff on a separate thread. Could you show
more of what happens inside action1() ?


Andrea D.
http://github.com/bolthar/freightrain
http://usingimho.wordpress.com

Thanks for ur reply Andrea,

It is like this,

if (abc1 = fgd)
click link1
enter value1
enter value2
click ok
end
if (abc2 = fge)
click link2
select a check box1
enter value1
click ok
end

Thanks
apr

Hei,

click ok
end

Still, i don’t understand what’s going on :slight_smile:
One quick and dirty (REALLY dirty) fix might be to check, before the
abc2 == (mind the ==, NOT = ) fge condition evaluation, if the system is
in a suitable state for the operation to be run and, if not, wait a
little until it’s ready. Something like:

if (abc1 == fgd)
click link1
enter value1
enter value2
click ok
end

while !operation_over?
sleep(1)
end

if (abc2 = fge)
click link2
select a check box1
enter value1
click ok
end

where operation_over? is a method that you will have to write that
checks for the system to be in a proper state: it should return true if
the operation run after the first condition is over, false otherwise.
But really, think twice before doing this: the problem you’re
experiencing derives from some global value you’re changing, and
global’s bad :slight_smile: i suggest you check for what’s going on deep under and
fix the underlying problem instead of writing this hack.