2012-04-24 3 views

答えて

1

多分あなたはクラス変数を使うことができます。クラス変数は、1つのインスタンスだけでなく、クラスのすべてのインスタンスで同じです。あなたが複数のインスタンスを持って言うの雑種で展開している場合は動作しません

def do_something 
    if @@locked 
    render text: "Sorry, somebody else working here." 
    else 
    @@locked = true 

    # do the stuff you need to do here 

    @@locked = false 
    end 
end 
+2

。各インスタンスには@ @ locked変数があります。デプロイメントに依存しないようにしたい場合は、ファイルシステムを使用する必要があります。複数のホストにデプロイする場合は、ロックを作成するファイルシステムをホスト間で共有する必要があります。 – RadBrad

+0

私はこれまで考えなかった... – klump

1
require FileUtils 
def lockable_action 
    if File.exists? "/tmp/lock" 
    # sorry, I'm locked 
    else 
    File.open("/tmp/lock","w") {|f| f.write("1") 
    # do your thing 
    FileUtils.rm "/tmp/lock" 
    end 
endk