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 ⇒ Object 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
55 56 57 58 59 60 61 |
# File 'lib/kamaze/project/tools/process_locker.rb', line 55 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
63 64 65 66 67 |
# File 'lib/kamaze/project/tools/process_locker.rb', line 63 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 ⇒ Object (protected)
103 104 105 |
# File 'lib/kamaze/project/tools/process_locker.rb', line 103 def inflector ActiveSupport::Inflector end |
#lock(lockname) ⇒ Object
Manage lock on given block
29 30 31 |
# File 'lib/kamaze/project/tools/process_locker.rb', line 29 def lock(lockname) mklock(lockname).acquire { yield } end |
#lock!(lockname) ⇒ Object
Manage lock on given block
38 39 40 41 42 43 |
# File 'lib/kamaze/project/tools/process_locker.rb', line 38 def lock!(lockname) mklock(lockname).acquire! { yield } rescue ProcessLock::AlreadyLocked raise Errno::EALREADY if mklock(lockname).alive? raise end |
#mklock(lockname) ⇒ ProcessLock (protected)
74 75 76 77 78 |
# File 'lib/kamaze/project/tools/process_locker.rb', line 74 def mklock(lockname) lockfile = mktemp(lockname) ProcessLock.new(lockfile) end |
#mktemp(lockname) ⇒ Pathname (protected)
Create a temporary file
84 85 86 87 88 |
# File 'lib/kamaze/project/tools/process_locker.rb', line 84 def mktemp(lockname) lockname = Pathname.new(lockname.to_s).basename('.*') mktmpdir.join(lockname) end |
#mktmpdir(options = {}) ⇒ Pathname (protected)
Create tmpdir
94 95 96 97 98 99 100 101 |
# File 'lib/kamaze/project/tools/process_locker.rb', line 94 def mktmpdir( = {}) tmpdir = self.tmpdir [:mode] ||= 0o700 FileUtils.mkdir_p(tmpdir, ) tmpdir end |
#tmpdir ⇒ Pathname
46 47 48 49 50 51 52 |
# File 'lib/kamaze/project/tools/process_locker.rb', line 46 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 |