gcslock-ruby
This is inspired by the Golang version.
Google Cloud Storage setup
- Setup a new project at the Google APIs Console and enable the Cloud Storage API.
- Install the Google Cloud SDK tool and configure your project and your OAuth credentials.
- Create a bucket in which to store your lock file using the command
gsutil mb gs://your-bucket-name
. - 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