2011-11-07 6 views
14

빠른 질문 사용 livereload ... 레일 3.0.x의 애플리케이션 작업 레일 : 거기 레일 전문가를위한 자산 파이프 라인

나는 가드와 LiveReload의 무거운 사용자이었다. 그러나 Rails 3.1에서 자산 파이프 라인을 사용할 때 livereload guard는 Sass 파일의 변경으로 인해 브라우저에 새 css가 전송되어야한다는 것을 알지 못합니다.

자산 파이프 라인에서 LiveReload를 사용하는 사람이 있습니까? 그렇다면 어떻게 작동시키고 있습니까?

감사합니다.

1) 모든하는 SCS 파일과 같이, 새로운 자산 대회 다음 이름이 있는지 확인하십시오 :

답변

21

는 Github에서 일부 문제가 스레드를 수행 한 후 나는 다음과 같은 고정 내 문제가 발견 나는하는 SCS를 사용했다 filename.css.scss

Rails 3.1 이전에 모든 저의 파일을 그냥 명명했습니다. filename.scss.

2 ) 당신의 guardfile에 livereload에 대해 다음 사용

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 '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 init livereload을 사스 수입과 잘 맞지 않는 이유로 씁니다.

+1

SASS를 올바르게 사용하는 경우 부분 화일을 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" }` 

나의 이해는이 컴파일 된 CSS 파일로하는 SCS 파일을 매핑입니다 :

그래서 나는이 작품 것을 발견했다. 나는 그것이 너무 싫증이 나기를 바란다.

Source: Github Issue

관련 문제