我最喜欢的SCSS调试功能之一是@warn和@debug指令,它们都有助于调试。但是,当我将其中任何一个放在我的scss文件中的Rails 3.1项目中时,它们不会出现在stdout中(来自运行tail -f log / development.log)
有没有人知道是否可以启用它们以便Sprockets / Rails不会禁用它们,我可以在输出流中查看输出。
答案 0 :(得分:7)
我还没有找到如何在开发日志中启用它们,但可以使用sass --watch实现相同的功能。
这是我的application.css.scss,它主要使用sass @import(不是sprockets * = require。请参阅here获取原因)来获取其他sass文件。)for shared variables / mixins / functions usage:
/*
*= 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%);
我打开一个终端窗口,并在主.scss文件中指出sass --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
是因为错误往往会导致sass - 反复重试,这是我不想要的。如果发生错误,--trace
会为您提供回溯。
只要没有发生错误,每次保存都会继续刷新此日志。
我也喜欢这种方法,因为它的ruby / rails是中性的(它应该是,它似乎),所以适用于运行sass的任何东西。
此外,如果您在Sass上使用Compass,这也适用。
只需在application.css.scss文件(或任何.scss文件)中激活指南针:
@import "compass";
然后使用``compass watch```:
$ compass watch app/assets/stylesheets/application.css.scss --css-dir tmp/cache/
--css-dir tmp/cache/
是为了避免罗盘手表创建覆盖.scss文件的.css文件。我用它将它们转储到缓存中。
答案 1 :(得分:1)
如果有人在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:据我所知,这只会出现在您的控制台中 - 而不是在日志中。