Rails:对资产管道使用livereload

Rails专家的快速提问...

使用Rails 3.0.x应用程序时,我经常使用Guard和LiveReload。但是,似乎在Rails 3.1中使用资产管道时,livereload守护程序不知道对Sass文件的更改应触发向浏览器发送新的CSS。

是否有人在资产管道中使用LiveReload?如果是这样,您如何使其工作?

谢谢!

Tom理查德逆天2020/04/03 10:44:46

我发现以下内容也可以很好地工作:

guard :livereload do
  watch(%r{^app/.+\.(erb|haml|js|css|scss|sass|coffee|eco|png|gif|jpg)})
  watch(%r{^app/helpers/.+\.rb})
  watch(%r{^public/.+\.html})
  watch(%r{^config/locales/.+\.yml})
end

这不是您运行时生成的默认代码,guard init livereload因为某些原因无法与sass导入一起正常运行。

伽罗理查德2020/04/03 10:44:46

正如@mirko在其评论中提到的那样,不赞成在scss文件上使用额外的.css。因此,添加该方法不是一个很好的解决方案,而且我已经体验到,简单地添加scss扩展名会强制重新加载页面。

所以我发现这可行:

watch(%r{(app|vendor)(/assets/\w+/(.+)\.(scss))}) { |m| "/assets/#{m[3]}.css" }`

我的理解是,这会将scss文件映射到已编译的css文件。我希望它也适用于无礼。

资料来源:Github Issue