Skip to content

XaF/gcslock-ruby

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

gcslock-ruby

This is inspired by the Golang version.

Google Cloud Storage setup

  1. Setup a new project at the Google APIs Console and enable the Cloud Storage API.
  2. Install the Google Cloud SDK tool and configure your project and your OAuth credentials.
  3. Create a bucket in which to store your lock file using the command gsutil mb gs://your-bucket-name.
  4. Enable object versioning in your bucket using the command gsutil versioning set on gs://your-bucket-name.

Using a mutex

In your Ruby code, require gcslock/mutex and use it as follows:

require 'gcslock/mutex'

m = GCSLock::Mutex.new('your-bucket-name', 'my-file.lock')
m.synchronize do
  # Protected and globally serialized computation happens here.
end

Using a semaphore

In your Ruby code, require gcslock/semaphore and use it as follows:

require 'gcslock/semaphore'

number_of_permits = 10
s = GCSLock::Semaphore.new('your-bucket-name', 'my-file.lock', number_of_permits)
s.acquire
# Work that should be done when semaphore is acquired
s.release

About

Google Cloud Storage distributed locking for Ruby

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages