Rails 请问如何在 Rails production 环境下 reload assets 静态资源?

onizuka · 2016年07月15日 · 最后由 zhang_soledad 回复于 2016年07月15日 · 1998 次阅读

需求

公司需要在后台动态维护一个字体库,管理员上传了 svg 后程序自动生成对应的字体文件,然后需要在不重新启动服务的情况下,让前端及时的加载。

现有实现

使用 fontcustom 来生成字体文件,然后调用 rake 来重新编译 assets 静态资源,再上传到 cdn 上。

if Fontcustom::Base.new(options,glyphs).compile
   if Rails.env.production?
     rake_assets(:clean)
     rake_assets(:precompile)
     rake_assets(:cdn)
   end
   ActionController::Base.view_paths.paths.first.clear_cache
end

以上代码是在队列中完成 最后一行是清除 view 的模板缓存,此时,模板确实会重新加载,但是 assets 的指纹码并没有更新,请问有什么方法或接口能让 rails 读新的指纹码?感觉是不是还漏了什么清除缓存的接口?

Rails 的约定不要去破坏!!


为何不换一个思路?!😩 这类场景不要走 Assets Pipeline 的流程。

#1 楼 @huacnlee 谢答,不走 Assets Pipeline,做单独的 css font, 那我需不需去做指纹码?如果不做,就会产生缓存问题,如果做指纹码,感觉还是我上面提到的问题,无法重新使用新的指纹码

需要 登录 后方可回复, 如果你还没有账号请 注册新账号