Quick question for rails pros out there...
When working with Rails 3.0.x apps I was a heavy user of Guard and LiveReload. However, it seems that when using the asset pipeline in Rails 3.1 the livereload guard does not know that changes to a Sass file should trigger sending new css to the browser.
Is anyone using LiveReload with the Asset Pipeline? If so, how are you making it work?
Thanks!
After following some issue threads on Github I found the following fixed my problem:
1) Make sure all scss files are named following the new asset convention, like so: filename.css.scss
I was using scss before Rails 3.1 and had just named all my sass files filename.scss
.
2) Use the following for livereload in your guardfile:
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
I have found the following to work quite well too:
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
This is not the default code that is generated when you run guard init livereload
as for some reason that does not work so well with sass imports.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With