0
DBを使用せずに一度に1人のユーザにアクションを制限したいという奇妙な状況がありますか?1人のユーザだけがdbを使用せずにアクセスできるように、レールにアクションをロックする方法
ありがとうございました。
DBを使用せずに一度に1人のユーザにアクションを制限したいという奇妙な状況がありますか?1人のユーザだけがdbを使用せずにアクセスできるように、レールにアクションをロックする方法
ありがとうございました。
多分あなたはクラス変数を使うことができます。クラス変数は、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
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
。各インスタンスには@ @ locked変数があります。デプロイメントに依存しないようにしたい場合は、ファイルシステムを使用する必要があります。複数のホストにデプロイする場合は、ロックを作成するファイルシステムをホスト間で共有する必要があります。 – RadBrad
私はこれまで考えなかった... – klump