2016-05-10 10 views
0

多くのscssファイルを含むRuby-on-Railsプロジェクトがあります。画像は、cloudin.com cdnに保存されています。ソースSCSSファイルの中にこのような構造があります:scssをscssにコンパイルし、定義されていない関数を適用しない

.test { 
    background-image: cloudinary-url("somepic.png",$width:10,$height:10); 
} 

その後、我々は一つの大きなSCSSにすべてのSCSSファイルをコンパイルしてみてください。 Cloudy gemは、デプロイ時に正しいURLに置き換えてください。

これはすべて、以前のノード、gulp-sassおよびnode-sassライブラリで更新する前に動作しましたが、新しいバージョンを使用する必要があります。そして今、それは動作しません。 Function cloudinary-url doesn't support keyword arguments

機能cloudinary-URLが本当にコンパイル時に定義されていません。

はここでエラーです。目標は、未定義の関数の処理を何とかスキップすることです。そのため、コンパイルされたscssファイルでは、ソースファイルと同じようにbackground-image: cloudinary-url("somepic.png",$width:10,$height:10);を指定する必要があります。どうやってするか?

答えて

1

私が正しく理解していれば、Nodeを使ってSassをコンパイルし、後でその結果をRailsアプリケーションに含めます。必要なのは、Nodeアプリケーションのノード・サスの構成でカスタム関数を定義することです。 (!未テスト)のような 何か:

functions: { 
    "cloudinary-url": function(publicId, sassOptions) { 
    var options = {} 
    var i, l, key, value; 

    for (i = 0, l = sassOptions.getLength(); i < l; i++) { 
     key = sassOptions.getKey(i); 
     value = sassOptions.getValue(i); 
     options[key] = value 
    } 
    return new sass.types.String(cloudinary.url(publicId.getValue(), options)); 
    } 
} 

を含めるとSASSをコンパイルし、あなたのノードのアプリでCloudinary Node SDKを設定します。 node-sass samplesも参照してください。

0123,をそのままRailsアプリに渡したい場合は、コメントとして追加して後処理で置き換えることをおすすめします(gulp-replaceなど)。

.test { 
    background-image: url(dummy.jpg); //cloudinary-url("somepic.png",$width:10,$height:10); 
} 

...と一気で、SASSをコンパイルした後...

.pipe(replace('url(dummy.jpg); //', '')) 
関連する問題