2011-08-24 38 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