自动编译资产并使用 nginx 提供服务(开发)
Compile assets automatically and serve them with nginx (development)
我正在开发一个 Rails 应用程序,其中包含大量资产,遗憾的是无法减少。在生产中这不是问题,但在开发中,应用程序服务器(如 webrick 或 Thin)无法快速满足每个访问页面约 20 个资产请求。
所以我开始在开发中使用 nginx 来为 public/assets
中的任何内容提供服务。请注意,nginx 纯粹是一个开发工具 - 我们不打算在生产中使用它。
为了让它工作,我只需要做两件事:
- 将
config.assets.debug
设置为 false
- 运行
rake assets:precompile
遗憾的是我的设置有两个问题(后者是最重要的一个):
- 每次资产更改都需要再次手动 运行ning
rake assets:precompile
- 为了让应用服务器获取新编译的资源,我必须重新启动它。
什么是正确的 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 可以解决这个问题。
我正在开发一个 Rails 应用程序,其中包含大量资产,遗憾的是无法减少。在生产中这不是问题,但在开发中,应用程序服务器(如 webrick 或 Thin)无法快速满足每个访问页面约 20 个资产请求。
所以我开始在开发中使用 nginx 来为 public/assets
中的任何内容提供服务。请注意,nginx 纯粹是一个开发工具 - 我们不打算在生产中使用它。
为了让它工作,我只需要做两件事:
- 将
config.assets.debug
设置为 false - 运行
rake assets:precompile
遗憾的是我的设置有两个问题(后者是最重要的一个):
- 每次资产更改都需要再次手动 运行ning
rake assets:precompile
- 为了让应用服务器获取新编译的资源,我必须重新启动它。
什么是正确的 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 可以解决这个问题。