Merge pull request #139 from brainopia/foreman
--- If you remember Ive wanted to implement a prototype of process-tree monitor (and therefore restore support for complex commands), but decided to start with specing current behavior and marking desired behavior as pending specs. This pull-request is a first pass. Its mainly Foreman::Process specs and a bit of refactoring. Specs for Foreman::Engine will be coming next (theyll cover a wide ground of possible uses). Afterwards I will replace machinery a bit to remove pending specs and ensure the rest is still passing on all available to me platforms. If you have any notices, Ill gladly hear them.
This commit is contained in:
commit
f28725bdac
11 files changed
+191
-47
No files matched your search
+23
-7
@@ -24,6 +24,24 @@ class Foreman::Process
|
||||
"%s.%s" % [ entry.name, num ]
|
||||
end
|
||||
|
||||
def kill(signal)
|
||||
pid && Process.kill(signal, pid)
|
||||
rescue Errno::ESRCH
|
||||
false
|
||||
end
|
||||
|
||||
def detach
|
||||
pid && Process.detach(pid)
|
||||
end
|
||||
|
||||
def alive?
|
||||
kill(0)
|
||||
end
|
||||
|
||||
def dead?
|
||||
!alive?
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def fork_with_io(command, basedir)
|
||||
@@ -69,12 +87,10 @@ private
|
||||
end
|
||||
|
||||
def with_environment(environment)
|
||||
old_env = ENV.each_pair.inject({}) { |h,(k,v)| h.update(k => v) }
|
||||
environment.each { |k,v| ENV[k] = v }
|
||||
ret = yield
|
||||
ENV.clear
|
||||
old_env.each { |k,v| ENV[k] = v}
|
||||
ret
|
||||
original = ENV.to_hash
|
||||
ENV.update environment
|
||||
yield
|
||||
ensure
|
||||
ENV.replace original
|
||||
end
|
||||
|
||||
end
|
||||
Reference in new issue
Block a user