2011-11-07 199 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