2011-12-02 5 views
9

Una delle mie funzionalità di debug preferite di SCSS è le direttive @warn e @debug, che entrambe aiutano con il debug. Tuttavia, quando inserisco uno di questi nei miei file scss in un progetto Rails 3.1, non appaiono nello stdout (dall'esecuzione tail -f log/development.log)Come visualizzare le direttive SCSS @warn e @debug in un progetto Rails 3.1?

Qualcuno sa se è possibile abilitare questi in modo che Sprockets/Rails non li disabiliti e posso visualizzare l'output nel flusso di output.

risposta

7

Non ho trovato come abilitarli nel registro di sviluppo ma è possibile ottenere la stessa cosa utilizzando sass -watch.

Ecco il mio application.css.scss che tira lo più altri file Sass utilizzando @import sass (non pignoni * = richiedere vedere here del perché..) Per la condivisione variabili/mixin/funzioni utilizzo:

/* 
*= require_self 
*= depend_on projects 
*/ 

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

layout.css.scss Ora supponiamo che ha questa variabile:

$main-color: #327B31; 

posso ottenere il suo valore nel file di project.css.scss

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

apro un terminale finestra e punto sass --watch il file .scss principale che tira negli altri

$ 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 perché errori tendono a rendere sass --watch RETRY ripetutamente che io don non voglio --trace ti dà un backtrace se si verifica un errore.

Finché non si verifica un errore, questo registro continuerà ad aggiornare ad ogni salvataggio.

Mi piace questo approccio anche perché è ruby ​​/ rails neutro (che dovrebbe essere, sembra) e quindi funziona con qualsiasi cosa che esegue sass.

Inoltre, questo funziona se si utilizza Compass su Sass.

Basta attivare la bussola nel file application.css.scss (o qualsiasi file di .scss):

@import "compass"; 

e quindi utilizzare `` bussola watch```:

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

--css-dir tmp/cache/ è per evitare che la bussola guardi creando file .css che sovrascrivono quelli di .scss. Li scarico nella cache con questo.

1

Rails 5

Se qualcuno viene qui in cerca di questo in Rails 5, si può semplicemente aggiungere @warn direttive per i fogli di stile e l'uscita saranno stampati alla console (è necessario eseguire rails s).

Ad esempio:

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

stamperanno questa uscita per la console:

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

PS: Per quanto posso dire, questo si presenta nella console solo - non nei registri .

Problemi correlati