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

pur*_*nic 9 sass ruby-on-rails-3.1

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

有谁知道是否可以启用这些,以便Sprockets/Rails不会禁用它们,我可以在输出流中查看输出.

yuv*_*lio 7

我还没有找到如何在开发日志中启用它们,但可以使用sass --watch实现相同的功能.

这是我的application.css.scss,它主要使用sass @import(不是sprockets*= require.请参阅此处了解原因.)来获取共享变量/ mixins/functions用法的其他sass文件:

/*
 *= require_self
 *= depend_on projects
*/

@import "layout.css.scss";
@import "projects.css.scss";
Run Code Online (Sandbox Code Playgroud)

现在假设layout.css.scss有这个变量:

$main-color:  #327B31;
Run Code Online (Sandbox Code Playgroud)

我可以在文件project.css.scss中获取它的值

@debug "Main color is:" $main-color;
@warn "Darker: " darken($main-color, 20%);
Run Code Online (Sandbox Code Playgroud)

我打开一个终端窗口,并在主.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 
Run Code Online (Sandbox Code Playgroud)

--stop-on-error 是因为错误倾向于使sass - watch重复重复,这是我不想要的.--trace如果发生错误,会给你一个回溯.

只要不发生错误,此日志将在每次保存时继续刷新.

我也喜欢这种方法,因为它的ruby/rails是中性的(它应该是,它似乎),所以适用于任何运行sass的东西.

此外,如果您在Sass上使用Compass,这也适用.

只需在application.css.scss文件(或任何.scss文件)中激活指南针:

@import "compass";
Run Code Online (Sandbox Code Playgroud)

然后使用``compass watch```:

$ compass watch app/assets/stylesheets/application.css.scss  --css-dir tmp/cache/
Run Code Online (Sandbox Code Playgroud)

--css-dir tmp/cache/是为了避免罗盘手表创建覆盖.scss文件的.css文件.我用它将它们转储到缓存中.