Module: Dapp::Project::Lock

Included in:
Dapp::Project
Defined in:
lib/dapp/project/lock.rb

Overview

Lock

Instance Method Summary collapse

Instance Method Details

#_lock(name) ⇒ Object



10
11
12
13
# File 'lib/dapp/project/lock.rb', line 10

def _lock(name)
  @_locks ||= {}
  @_locks[name] ||= ::Dapp::Lock::File.new(lock_path, name)
end

#lock(name, *_args, default_timeout: 300, **kwargs, &blk) ⇒ Object



15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
# File 'lib/dapp/project/lock.rb', line 15

def lock(name, *_args, default_timeout: 300, **kwargs, &blk)
  if dry_run?
    yield if block_given?
  else
    timeout = cli_options[:lock_timeout] || default_timeout
    _lock(name).synchronize(
      timeout: timeout,
      on_wait: proc do |&do_wait|
        log_secondary_process(
          t(code: 'process.waiting_resouce_lock', data: { name: name }),
          short: true,
          &do_wait
        )
      end, **kwargs, &blk
    )
  end
end

#lock_pathObject



6
7
8
# File 'lib/dapp/project/lock.rb', line 6

def lock_path
  build_path.join('locks')
end