2011-11-07 198 views
14

钢轨利弊那里快速的问题...Rails的:使用livereload与资产管道

使用Rails 3.0.x的应用程序工作时我是民警卫队和LiveReload的重度使用者。但是,似乎在Rails 3.1中使用资产管道时,livereload guard并不知道对Sass文件所做的更改应触发向浏览器发送新的CSS。

是否有人在Asset Pipeline中使用LiveReload?如果是这样,你如何使它工作?

谢谢!

回答

21

在Github以下一些问题线程后,我发现下面的固定我的问题:

1)确保所有SCSS文件被命名为新的资产约定以下,像这样:filename.css.scss

我使用SCSS在Rails 3.1之前,并且刚刚命名了我所有的sass文件filename.scss

2)请使用您guardfile为livereload如下:

guard 'livereload' do 
    watch(%r{app/helpers/.+\.rb}) 
    watch(%r{app/views/.+\.(erb|haml)}) 
    watch(%r{(public/).+\.(css|js|html)}) 
    watch(%r{app/assets/stylesheets/(.+\.css).*$}) { |m| "assets/#{m[1]}" } 
    watch(%r{app/assets/javascripts/(.+\.js).*$}) { |m| "assets/#{m[1]}" } 
    watch(%r{lib/assets/stylesheets/(.+\.css).*$}) { |m| "assets/#{m[1]}" } 
    watch(%r{lib/assets/javascripts/(.+\.js).*$}) { |m| "assets/#{m[1]}" } 
    watch(%r{vendor/assets/stylesheets/(.+\.css).*$}) { |m| "assets/#{m[1]}" } 
    watch(%r{vendor/assets/javascripts/(.+\.js).*$}) { |m| "assets/#{m[1]}" } 
    watch(%r{config/locales/.+\.yml}) 
end 
+0

不错,我忘了lib文件夹。你会不会打扰供应商目录呢? – stephenmurdoch

+1

当然,添加了供应商目录。 – Andrew

+0

确保你的GemFile中有guard-livereload gem。 – FearMediocrity

6

我发现了以下工作得很好过:

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进口不起作用。

+1

是的,如果你正确地使用SASS,你不希望你的partials编译成css,所以你不能将它们命名为* .css.scss。 –

+0

我发布了这个相关的问题澄清这一点:http://stackoverflow.com/questions/12334515/naming-imported-scss-files-scss-or-css-scss。因此,如果您的文件名为_file.scss,并且它在@import“file”中使用;那么这个livereload策略是正确的,这些文件不应该重命名为_file.css.scss。 – justingordon

+0

是的!这比其他任何例子都更有帮助。我正在使用与SCSS包含系统相结合的资产管道。你的例子对我来说是“开箱即用”的。 – BradGreens

1

作为@mirko在他的评论中提到,scss文件中的额外.css已被弃用。因此,添加这不是一个很好的解决方案,我已经体验到,只需添加scss扩展即可强制页面重新加载。

所以我发现这工作:

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

我的理解是这样的映射SCSS文件编译的css文件。我希望它也适用于sass。

Source: Github Issue