如何在Rails 3.1项目中查看SCSS @warn和@debug指令?

时间:2011-12-02 16:08:44

标签: ruby-on-rails-3.1 sass

我最喜欢的SCSS调试功能之一是@warn和@debug指令,它们都有助于调试。但是,当我将其中任何一个放在我的scss文件中的Rails 3.1项目中时,它们不会出现在stdout中(来自运行tail -f log / development.log)

有没有人知道是否可以启用它们以便Sprockets / Rails不会禁用它们,我可以在输出流中查看输出。

2 个答案:

答案 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

如果有人在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:据我所知,这只会出现在您的控制台中 - 而不是在日志中。