Как просмотреть директивы SCSS @warn и @debug в проекте Rails 3.1? - PullRequest
9 голосов
/ 02 декабря 2011

Одна из моих любимых функций отладки в SCSS - это директивы @warn и @debug, которые помогают в отладке. Однако, когда я помещаю любой из них в мои файлы scss в проекте Rails 3.1, они не появляются в stdout (из запуска tail -f log / development.log)

Кто-нибудь знает, возможно ли включить их, чтобы Sprockets / Rails не отключали их, и я могу просмотреть выходные данные в потоке вывода.

Ответы [ 2 ]

7 голосов
/ 27 июня 2012

Я не нашел, как включить их в журнале разработки, но могу добиться того же с помощью sass --watch.

Вот мой application.css.scss, который в основном извлекает другие sass-файлы, используя sass @import (не sprockets * = require. См. здесь , почему.) Для использования общих переменных / mixins / functions:

/*
 *= 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%);

Я открываю окно терминала и указываю sass --watch на основной файл .scss, который загружает остальные

$ 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 --watch, чего я не хочу. --trace дает вам обратную трассировку в случае ошибки.

Пока ошибка не возникает, этот журнал будет обновляться при каждом сохранении.

Мне нравится этот подход еще и потому, что он нейтрален по отношению к ruby ​​/ rails (как и должно быть), и работает с любым sass-сервером.

Кроме того, это работает, если вы используете Compass поверх Sass.

Просто активируйте компас в своем файле application.css.scss (или любом другом файле .scss):

@import "compass";

и затем используйте `` compass watch```:

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

--css-dir tmp/cache/ - чтобы компас не создавал файлы .css, которые переопределяют ваши .scss. Я выкидываю их в кеш с этим.

1 голос
/ 09 января 2018

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: Насколько я могу судить, это проявляется втолько ваша консоль - не в логах.

...