自动编译资产并使用 nginx 提供服务(开发)

Compile assets automatically and serve them with nginx (development)

我正在开发一个 Rails 应用程序,其中包含大量资产,遗憾的是无法减少。在生产中这不是问题,但在开发中,应用程序服务器(如 webrick 或 Thin)无法快速满足每个访问页面约 20 个资产请求。

所以我开始在开发中使用 nginx 来为 public/assets 中的任何内容提供服务。请注意,nginx 纯粹是一个开发工具 - 我们不打算在生产中使用它。

为了让它工作,我只需要做两件事:

遗憾的是我的设置有两个问题(后者是最重要的一个):

什么是正确的 nginx / Asset Pipeline 设置,它不需要 Rails 服务器在预编译后重新启动?

也欢迎自动编译。

这可能需要很多努力,但考虑切换到 gulp 或 grunt 以编译资产。使用node js可以显着加速进程显着(上面的文章很多,这里举一个例子http://blog.carbonfive.com/2014/05/05/roll-your-own-asset-pipeline-with-gulp/)。 同样重要的资产可以在不重启服务器的情况下编译(文件更改时触发的过程 [hooks])。在我参与的项目中,我们的一个人正在尝试进行这种转换,根据他的说法,我明白这不是一日之功。

这个设置对我有用:

  • config.asset_host
  • 中包含 nginx 端口
  • config.assets.debug = false
  • config.assets.digest = true
  • config.assets.compile = true
  • 在启动 Rails 服务器之前,运行 rm -rf public/assets; rake tmp:clear tmp:cache:clear assets:clean assets:precompile
  • 启动 Rails 服务器
  • 在每次资产更改时,运行 再次 rake assets:precompile。 Guard 可以解决这个问题。