2011-08-24 61 views
3

如果我有一個Ruby程序,並且我只希望它的一個實例能夠一次運行,那麼完成該任務的最佳方法是什麼?我試過谷歌搜索,但它認爲我正在尋找單身相關的信息,很難找到我真正想要的東西。單實例Ruby應用程序?

[1] =最好最短,最簡單的,自我explanitory,不需要額外的寶石

回答

4

http://rosettacode.org/wiki/Determine_if_only_one_instance_is_running#Ruby

def main 
    puts "first instance" 
    sleep 20 
    puts :done 
end 

if $0 == __FILE__ 
    if File.new(__FILE__).flock(File::LOCK_EX | File::LOCK_NB) 
    main 
    else 
    raise "another instance of this program is running" 
    end 
end 
+0

如果您使用的是Windows,二審甚至不啓動跑步。 ruby解釋器本身失敗,錯誤'ruby:Permission denied - test.rb(Errno :: EACCES)'。 – DNNX

+0

也許File.new(\ _ \ _ FILE \ _ \ _,「w」)? – Cheng