legacy-knowledge-base
公開されました Jul. 2, 2025

SASS関連エラーの処理

投稿者

Liferay Support

knowledge-article-header-disclaimer-how-to

knowledge-article-header-disclaimer

legacy-article

learn-legacy-article-disclaimer-text

Portal 6.2では、LiferayプラットフォームはSASSとCompassを使用してCSSファイルの作成を簡素化し、異なるブラウザタイプのためにコードが重複する際の手作業によるミスを回避しています。

SASSはRubyベースのソリューションで、よく整理された保守性の高いソースを作るのに役立ちます。 さらに、SASSファイルからブラウザ固有のCSSファイル(余分な書式やマクロを含むCSSファイル)を構築します。 これを可能にするために、ポータルにjRubyを搭載し、JVMの中でRubyのコードを実行できるようにしました。これは楽しいかもしれませんが、そうではありません。 本当に。 通常、jRubyがSASSファイルをSASSコンパイラで処理した場合、生成されたファイルはSASSファイルがあるフォルダと同じフォルダ内の.sass-cacheフォルダに格納されます(拡張子は.cssを使っていますが、ファイルにはSASSソースが入っています)。

解決策

jRubyが起動し、可能な限りのCPUを食い尽くすようになるのはいつ頃でしょうか?

SASSファイルをCSSファイルにコンパイルする必要がある場合。

jRubyがSASSファイルをコンパイルするトリガーは何ですか?

DynamicCSSFilterがトリガーとなります。

DynamicCSSFilterがきっかけで、jRubyがSASSファイルを何度も処理するのはなぜですか?

.sass-cacheフォルダのタイムスタンプやパーミッションが乱れているか、.sass-cacheフォルダにキャッシュされたファイルがまったくないかです。


想定されるいくつかの問題点

新しいテーマがデプロイされたが、jRubyがLOTに動作する。 この場合、まず考えるべきは、.sass-cacheフォルダが全くないか、空っぽであることです。

もしそれがないか空であれば、build-cssターゲットが起動されなかったか、ビルド時に失敗した可能性があります。 残念ながら、失敗してもビルドプロセスは停止しないので、失敗したかどうかを検出するのは難しいです。 このような場合、開発者はそれを確認し、再度実行してテーマを再デプロイする必要があります。 (CSSを使用したポートレットも同様です)。

ポータル独自のCSSファイルは、HookやExtプラグインでカスタマイズされています。 この場合、キャッシュされたファイルのタイムスタンプはソースCSSファイルのタイムスタンプと異なるため、DynamicCSSFilterはjRuby経由でSASSコンパイルを開始します。 HookやExtプラグインのCSSファイルに対してbuild-cssが実行され、.sass-cacheフォルダが生成されていなければ、ここでは何もできず、ただjRubyが仕事を終えるのを待つだけです。

これが本番サーバーで発生すると、応答時間が非常に遅くなったり、まったく応答しなくなったりすることがあります! そのため、本番サーバーにトラフィックを送る前に、イントラネットからページを訪問してテストし、サーバーのCPU使用率を監視して、トラフィックがサーバーに到達した後にjRubyが問題を引き起こすかどうかを確認することが推奨されます。

ポータルは、アプリケーションサーバーのTEMPフォルダーの中にあるliferayというフォルダーに前処理をしたファイルを保存します。 TEMPフォルダをクリーンアップするバックグラウンドジョブがあることがあり、そのためにjRubyが何度も実行されて何度もファイルを処理する可能性があります。 これは厄介な問題なので、次回、jRubyが大量に動作する理由を調べなければならないときに、このことを忘れないようにしてください。

JBoss のようないくつかのアプリケーションサーバーでは、ポータルの .war ファイルが解凍されていない場合、SASS 関連の問題が発生する可能性があります:LPS-52665

MAVENを使用して開発を行うお客様が増えています。 MAVEN SDKでは、build-cssターゲットが断続的に欠落していたため、.sass-cacheが生成されていなかった。 この場合、SDKをアップデートする必要があります。 MAVEN-128を参照してください。

did-this-article-resolve-your-issue

legacy-knowledge-base