mirror of
https://github.com/puma/puma.git
synced 2022-11-09 13:48:40 -05:00
35 lines
679 B
Ruby
35 lines
679 B
Ruby
require 'puma/plugin'
|
|
|
|
Puma::Plugin.create do
|
|
def start(launcher)
|
|
path = File.join("tmp", "restart.txt")
|
|
|
|
orig = nil
|
|
|
|
# If we can't write to the path, then just don't bother with this plugin
|
|
begin
|
|
File.write path, ""
|
|
orig = File.stat(path).mtime
|
|
rescue SystemCallError
|
|
return
|
|
end
|
|
|
|
in_background do
|
|
while true
|
|
sleep 2
|
|
|
|
begin
|
|
mtime = File.stat(path).mtime
|
|
rescue SystemCallError
|
|
# If the file has disappeared, assume that means don't restart
|
|
else
|
|
if mtime > orig
|
|
launcher.restart
|
|
break
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|
|
|