adamwiggins (owner)

Revisions

gist: 7805 Download_button fork
public
Public Clone URL: git://gist.github.com/7805.git
create_semaphores.rb
1
2
3
4
5
6
7
8
9
10
11
class CreateSemaphores < ActiveRecord::Migration
   def self.up
      create_table :semaphores do |t|
         t.column :name, :text
         t.column :value, :integer
      end
      add_index :semaphores, :name, :unique => true
   end
end
 
 
sample_usage.rb
1
2
3
4
Semaphore.lock('lock1', 'lock2') do
   # code
end
 
semaphore.rb
1
2
3
4
5
6
7
8
9
10
class Semaphore < ActiveRecord::Base
   def self.lock(*keys)
      transaction do
         keys.sort.map { |key| create!(:name => key).destroy }
         yield
      end
   end
end