Ruby on rails touch tmp/restart.txt实际上是如何工作的?

Ruby on rails touch tmp/restart.txt实际上是如何工作的?,ruby-on-rails,server,Ruby On Rails,Server,我看到这里的人说要点击tmp/restart.txt来重启rails服务器,但我很想知道这到底是如何工作的。restart.txt是tmp文件夹中的一个空文件,那么当您触摸该文件时,Rails如何知道重新启动服务器?也就是说,允许此功能工作的代码在哪里,因为它不在restart.txt中?如果您查看config/spring.rb,您将看到它被配置为监视此文件。我认为默认情况是每2秒进行一次投票 Spring.watch( “tmp/restart.txt”, “tmp/caching-dev.

我看到这里的人说要点击tmp/restart.txt来重启rails服务器,但我很想知道这到底是如何工作的。restart.txt是tmp文件夹中的一个空文件,那么当您触摸该文件时,Rails如何知道重新启动服务器?也就是说,允许此功能工作的代码在哪里,因为它不在restart.txt中?

如果您查看
config/spring.rb
,您将看到它被配置为监视此文件。我认为默认情况是每2秒进行一次投票

Spring.watch(
“tmp/restart.txt”,
“tmp/caching-dev.txt”
)

代码当然在服务器中。详细信息取决于您使用的服务器。但是像这样的特性通常是通过轮询来工作的:
stat
大约每秒对文件进行一次轮询。如果文件存在且上次修改时间晚于服务器启动时间,则会重新启动。或者,操作系统可以注册回调以接收文件系统更改通知,但没有独立于操作系统的标准afaik。