Rails:使用带有Asset Pipeline的livereload

And*_*rew 14 ruby-on-rails sass ruby-on-rails-3.1 asset-pipeline

铁轨的快速问题在那里有所帮助......

使用Rails 3.0.x应用程序时,我是Guard和LiveReload的重度用户.但是,似乎在Rails 3.1中使用资产管道时,livereload guard不知道对Sass文件的更改应该触发向浏览器发送新的css.

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

谢谢!

And*_*rew 21

在Github上关注一些问题后,我发现以下问题解决了我的问题:

1)确保所有scss文件都按照新的资产约定命名,如下所示: filename.css.scss

我在Rails 3.1之前使用scss并且刚刚命名了所有我的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
Run Code Online (Sandbox Code Playgroud)


ste*_*och 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
Run Code Online (Sandbox Code Playgroud)

这不是您运行时生成的默认代码,guard init livereload因为某些原因使用sass导入不能很好地运行.