Rails 5 中的迅捷开发模式

对于大型项目代码来说,Rails 5 增加了一个迅捷开发模式。

正如我们所知道的,在开发(development)模式时,如果代码发生了变化, 当一个请求到来时, Rails 会重新加载整个程序。这样做的方法已经发展了很多年。

很长一段时间的 Rails 简单地在每一个请求无条件地重新加载。

Rails 的 3.2 改善了这个处理,增加了文件系统监视器,通过遍历代码树的请求检查每个文件的修改时间(mtimes)。

这棵树的遍历,是每个请求才会发生,而不是显示每个页面视图都会做。尤其是遍历应用的每个 assets 文件,虽然遍历整个应用程序树一次可能不会花很多时间,但取决于你 assets 文件的数量和代码规模。

Rails 5 是增加了一个事件驱动的文件监视系统。当有新的文件变化的操作系统调用 Rails 的异步处理来设置标志。当收到请求时,该标志会被设定。

这个监视器默认是关闭的,应用程序可以在 Gemfile 增加如下配置:

1
2
3
group :development do
  gem 'listen', '~> 3.0.4'
end

在 Linux 和 Mac OS X 安装没有什么特别依赖,但是在 BSD 和 Windows 安装的话,需要安装些依赖。

即使事件驱动监视器被启用,Rails Console 里想加载新的代码,仍然需要手动 reload, 因为如果后台自动改变已经实例化的对象会让人感到惊讶。

相比遍历整个应用程序树,这个监视系统会加快开发模式里的请求 Response 速度,特别是对于大型项目来说。

评论