Sha256: 68720facc4037ca54270dc70682ce7f0878b5ee8582cab640bcd5d5f283cbd8b

Contents?: true

Size: 442 Bytes

Versions: 1

Compression:

Stored size: 442 Bytes

Contents

class Locky

  Error = Class.new StandardError
  
  attr_reader :name

  def initialize(name, adapter={})
    @name = name
    @adapter = adapter
  end

  def lock(process)
    raise Error, "#{name} already locked by #{locked_by}" if locked?
    adapter[name] = process
    yield
  ensure
    adapter.delete name
  end

  def locked?
    adapter.key? name
  end

  def locked_by
    adapter[name]
  end

  private

  attr_reader :adapter

end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
locky-0.0.1 lib/locky.rb