2011-12-02 49 views
9

我最喜歡的SCSS調試功能之一是@warn和@debug指令,它們都有助於調試。但是,當我將這些文件放入Rails 3.1項目的scss文件中時,它們不會出現在標準輸出中(來自運行tail -f log/development.log)如何在Rails 3.1項目中查看SCSS @warn和@debug指令?

有誰知道是否可以啓用這些使得Sprockets/Rails不會禁用它們,並且我可以查看輸出流中的輸出。

回答

7

我還沒有找到如何在開發日誌中啓用它們,但可以通過使用sass --watch來實現同樣的功能。

這裏是我的application.css.scss其使用SASS @import(不鏈輪* =需要看到here爲什麼。)共享變量/混入/功能的使用大多是拉其他青菜文件:

/* 
*= require_self 
*= depend_on projects 
*/ 

@import "layout.css.scss"; 
@import "projects.css.scss"; 

現在假定layout.css.scss這一變量:

$main-color: #327B31; 

我可以在文件project.css.scss得到其數值

@debug "Main color is:" $main-color; 
@warn "Darker: " darken($main-color, 20%); 

我打開一個終端窗口,點青菜--watch的是,在其他

$ sass --watch app/assets/stylesheets/application.css.scss --stop-on-error --trace 
>>> Sass is watching for changes. Press Ctrl-C to stop. 
>>> Change detected to: /home/yuval/ws/books/railscasts/268-sass-basics/app/assets/stylesheets/projects.css.scss 
app/assets/stylesheets/projects.css.scss:5 DEBUG: "Main color is:" #327b31 
WARNING: "Darker: " #143214 
     on line 6 of app/assets/stylesheets/projects.css.scss 
     from line 16 of app/assets/stylesheets/application.css.scss 

    overwrite app/assets/stylesheets/application.css.css 

--stop-on-error是因爲拉失誤往往會使--watch反覆重試青菜爲主.scss文件,我不不想要。如果發生錯誤,--trace會爲您提供回溯。

只要沒有發生錯誤,這個日誌就會在每次保存時繼續刷新。

我喜歡這種方法也是因爲它是ruby/rails neutral(它應該是,它似乎),所以適用於任何運行sass的東西。

此外,如果您在Sass頂部使用Compass,則此功能可用。

只需激活您的application.css.scss文件羅盤(或任何.scss文件):

@import "compass"; 

然後用``指南針watch```:

$ compass watch app/assets/stylesheets/application.css.scss --css-dir tmp/cache/ 

--css-dir tmp/cache/被避免指南針手錶創建覆蓋.scss文件的.css文件。我將它們轉儲到緩存中。

1

Rails的5

若有人在這裏的Rails 5找這個,你可以簡單地添加@warn指令將樣式表和輸出將被打印到控制檯(您必須運行rails s)。

例如:

$main-color: #327B31; 
@warn "Main color is:" $main-color; 

將顯示此輸出到控制檯:

WARNING: "Main color is:" #f5f5f5 
    on line 2 of /path/to/your/app/assets/stylesheets/application.scss 

PS:據我所知,這顯示了在控制檯中唯一的 - 沒有在日誌中。