Sean O'Halpin
12/17/2008 6:04:00 PM
On Wed, Dec 17, 2008 at 9:37 AM, MrBanabas@googlemail.com
<MrBanabas@googlemail.com> wrote:
> Hi,
>
> Does anybody no how I may achieve it:
>
> Bob is starting script my_test.rb which runs a over an hour...
> 5 minutes later...
> Alice is not knowing that Box has already started is and starts it
> again.
> Script should detect that it is already running and stop executing.
>
> What is the best way to achieve this?
>
> Thanks a lot.
>
> --
> Volker
>
Daniel Berger suggested the following technique (see thread starting
at ruby-talk:302489).
This is my version:
def single_instance(&block)
if File.open($0).flock(File::LOCK_EX|File::LOCK_NB)
block.call
else
warn "Script #{ $0 } is already running"
end
end
single_instance do
# your main code here
end
Regards,
Sean