2011-06-27 9 views
5

アセット/スタイルシートディレクトリに[オブジェクト] .css.scssスタイルのセットを設定して、アプリケーションのさまざまなビューに対応させました。すべてのシートは、最初の行にグローバルスタイル変数の値のセットが含まれます。Rails 3.1 - SCSSの可変値を強制的にリフレッシュしますか?

@import "branding.css.scss"; 

をそして、ライブラリ全体($のprimaryColor、$ secondaryColor、など)を必要なときに、変数の値にアクセスします。

美しく乾燥していますが、残念ながら、_branding.css.scssファイルの変数値を変更すると、Railsはオブジェクトスタイルシートを更新しません。 SCSSがオブジェクトスタイルライブラリを更新された変数値で再コンパイルする前に、各ファイルに触れなければなりません。

これはマイナーな不満ですが、それは、私はそれを修正しようとしているブラウザのキャッシュをクリアしておく場合は特に、ワークフローへの破壊的だ:/

変数を整理するためのより良い方法はありますか?

強制的にリフレッシュする方法はありますか?

+1

Railsチームは何年にもわたって発展してきたSassの慣例を無視し、Sprockets(これは "ダム" CSSで動作するように設計されている)と組み合わせて構文を穏やかにサポートしようとしました。私はSass自動コンパイルの動作にSprocketsの動作を変更する方法を提案したいと思っています(ファイルが変更された場合は要求に応じて、tmpディレクトリにキャッシュします)が、私たちは1。これらの資産パイプラインの問題は、おそらく少なくとも数週間はRCで3.1になります。 – coreyward

答えて

1

これは確かに非常に迷惑です...

私は完全なソリューションを持っていないが、私が見つけた一つのことは、あなたがする必要があるすべてはタッチ「application.css.scss」取得するためであるということですすべてを再コンパイルします。

ガードコンパスとguard-livereloadを最近使用し始めましたが、3.1でも同じ問題があります。多分、私よりも賢明な人が、それを修正して 'application.css.scss'にも触れることができるのでしょうか?

3

私は変数とミックスインをincludes.css.scssファイルに入れ、それらを必要とする各スタイルシートにインポートしています。インクルードファイルが変更されたときにRailsを再コンパイルするには、application.jsのdepend_onディレクティブを使用する必要があります。例えば:

application.css

/* 
    *= depend_on includes 
    *= require_self 
    *= require stylesheet 
*/ 

includes.css.scss

$bg-color: #999; 

stylesheet.css.scss

@import "includes.css.scss"; 

body { background: $bg-color; } 
+0

application.cssを意味しますか?私はこれを試して、リフレッシュを強制しませんでした。私はWin7で開発しています。なぜなら、私はマゾキストなので、おそらくそれが理由です。 – RSG

+0

はい、私はそれを残念しました!私は何の問題も気づいていないが、 '* = depend_on include'の代わりに' * = require include'を試してみて、それがうまくいくかどうか確認してください。また、Sprocketsのドキュメントをチェックする価値があるかもしれません:https://github.com/sstephenson/sprockets – sausman

関連する問題