Class: Kamaze::Project::Tools::ProcessLocker
- Inherits:
-
BaseTool
- Object
- Observable
- BaseTool
- Kamaze::Project::Tools::ProcessLocker
- Defined in:
- lib/kamaze/project/tools/process_locker.rb,
lib/kamaze/project/tools/process_locker.rb
Overview
Process Locker
Instance Attribute Summary collapse
- #observer_peers ⇒ Hash|nil included from Concern::Observable readonly protected
Class Method Summary collapse
- .method_missing(method, *args, &block) ⇒ Object
- .respond_to_missing?(method, include_private = false) ⇒ Boolean
Instance Method Summary collapse
- #inflector ⇒ Dry::Inflector protected
-
#lock(lockname) ⇒ Object
Manage lock on given block.
-
#lock!(lockname) ⇒ Object
Manage lock on given block.
- #mklock(lockname) ⇒ ProcessLock protected
-
#mktemp(lockname) ⇒ Pathname
protected
Create a temporary file.
-
#mktmpdir(options = {}) ⇒ Pathname
protected
Create
tmpdir
. - #tmpdir ⇒ Pathname
Constructor Details
This class inherits a constructor from Kamaze::Project::Tools::BaseTool
Instance Attribute Details
#observer_peers ⇒ Hash|nil (readonly, protected) Originally defined in module Concern::Observable
Class Method Details
.method_missing(method, *args, &block) ⇒ Object
54 55 56 57 58 59 60 |
# File 'lib/kamaze/project/tools/process_locker.rb', line 54 def method_missing(method, *args, &block) if respond_to_missing?(method) self.new.public_send(method, *args, &block) else super end end |
.respond_to_missing?(method, include_private = false) ⇒ Boolean
62 63 64 65 66 |
# File 'lib/kamaze/project/tools/process_locker.rb', line 62 def respond_to_missing?(method, include_private = false) return true if self.new.respond_to?(method, include_private) super(method, include_private) end |
Instance Method Details
#inflector ⇒ Dry::Inflector (protected)
103 104 105 106 107 |
# File 'lib/kamaze/project/tools/process_locker.rb', line 103 def inflector require 'dry/inflector' Dry::Inflector.new end |
#lock(lockname) ⇒ Object
Manage lock on given block
28 29 30 |
# File 'lib/kamaze/project/tools/process_locker.rb', line 28 def lock(lockname) mklock(lockname).acquire { yield } end |
#lock!(lockname) ⇒ Object
Manage lock on given block
37 38 39 40 41 42 |
# File 'lib/kamaze/project/tools/process_locker.rb', line 37 def lock!(lockname) mklock(lockname).acquire! { yield } rescue ProcessLock::AlreadyLocked raise Errno::EALREADY if mklock(lockname).alive? raise end |
#mklock(lockname) ⇒ ProcessLock (protected)
73 74 75 76 77 |
# File 'lib/kamaze/project/tools/process_locker.rb', line 73 def mklock(lockname) lockfile = mktemp(lockname) ProcessLock.new(lockfile) end |
#mktemp(lockname) ⇒ Pathname (protected)
Create a temporary file
83 84 85 86 87 |
# File 'lib/kamaze/project/tools/process_locker.rb', line 83 def mktemp(lockname) lockname = Pathname.new(lockname.to_s).basename('.*') mktmpdir.join(lockname) end |
#mktmpdir(options = {}) ⇒ Pathname (protected)
Create tmpdir
93 94 95 96 97 98 99 100 |
# File 'lib/kamaze/project/tools/process_locker.rb', line 93 def mktmpdir( = {}) tmpdir = self.tmpdir [:mode] ||= 0o700 FileUtils.mkdir_p(tmpdir, ) tmpdir end |
#tmpdir ⇒ Pathname
45 46 47 48 49 50 51 |
# File 'lib/kamaze/project/tools/process_locker.rb', line 45 def tmpdir tmp = Pathname.new(Dir.tmpdir) uid = Etc.getpwnam(Etc.getlogin).uid dir = [inflector.underscore(self.class.name).tr('/', '-'), uid].join('.') tmp.join(dir) end |