Rails 3.1 アプリでは、1 つのコントローラーで、一連のカスタム変数を使用して、要求ごとに必要な Sass スタイルシートをすべてのビューでコンパイルする必要があります。理想的には、コンテンツ ベースのアセット名 (コンテンツの MD5 ハッシュを含むもの) が生成されるように、アセット パイプラインを介してコンパイルを行う必要があります。ソリューションでは、Sass スタイルシートの ERB 処理などに頼るのではなく、純粋な Sass 機能を使用することが重要です。
私がここや他の場所で行った調査から、次の方法が可能なアプローチのようです。
変数アクセスの設定
たとえば、 Konstantin Haase がここ ( gist )で説明しているように、カスタム Sass 関数を使用して、ある種の変数アクセサー ブリッジを作成します。これはかなり簡単にできそうです。
Sassパーシャルを介してすべての変数アクセスを構成します。たとえば、
_base.sassコンパスの方法です。パーシャルは、上で定義したカスタム関数を使用できます。また、簡単です。
すべてのアセット参照をキャプチャ
asset_pathビューオブジェクトのメソッドをデコレートします。私はこれをうまく機能させています。のカスタム サブクラスを使用して参照を解決します
Sprockets::Environment。これもうまく機能しています。
ファイルの変更時間に関係なく、アセットの再コンパイルを強制する
私はまだこれに対する良い解決策を見つけていません。
Sass::Engine新しいをインスタンス化し、 で利用できるようになるカスタム データを渡すことで、Sass 処理を手動で開始する例を見てきましたSass::Script::Functions::EvaluationContext。このアプローチの問題点は、ファイルの命名とパスを自分で管理する必要があり、常に Sprockets の機能から逸脱する可能性があることです。ファイルの mod 時間に関係なく、リクエストごとに Sprockets の処理を強制する例を見つけることができませんでした。これにより、カスタム変数の受け渡しも可能になります。
一般的なアプローチに関するコメントと、(3) を最適に処理する方法に関する特定のポインター/提案をいただければ幸いです。