2012-04-12 86 views
0

我有一个rake任务删除了一些文件。这些文件可能被应用程序主动使用。由于我怀疑是我正在运行的文件系统(AFS)的一些特性,我无法在应用程序(和服务器)运行时删除这些文件。确定Rails服务器是否从rake任务运行

如果服务器正在运行,我想尽快中止。有没有什么方法可以检查由script/generate启动的服务器是否在rake任务中运行?

回答

2

您可以检查tmp/pids/server.pid的存在情况,rails s将在启动时创建,并在退出时删除。请注意,如果服务器没有干净地退出,文件仍然可能存在,所以您应该从文件中读取PID并检查它是否实际上正在运行:

path = File.join(Rails.root, "tmp", "pids", "server.pid") 
pid = File.read(path).to_i 
server_running = true 
begin 
    Process.getpgid pid 
rescue Errno::ESRCH 
    server_running = false 
end