3

アセットパイプラインを使用した、かなり大きなRailsアプリ(Rails 3.2.3)があります。アセットフォルダにはかなりの数のファイルがあります。

1.8.7では、実行rake assets:precompileには4分かかります。これは長いですが、資産の数が非常に多いため、私はそれを許容します。

問題は、アプリを1.9.2にアップグレードした後、実行に28分rake assets:precompileかかることです。

関連するgemバージョンは次のとおりです。

rails (= 3.2.3)
uglifier (1.2.3)
  execjs (~> 1.3.0)
therubyracer (~> 0.9.9)
  libv8 (~> 3.3.10)
sprockets (2.1.2)
  hike (~> 1.2)
  rack (~> 1.0)
  tilt (~> 1.1, != 1.3.0)

アセットがコンパイルされているのをtail -f log/production.log見て、単一のアセットへの長い遅延を特定できない場合(ログに同じアセットが複数回表示されているように見えますが、おそらく各アセットに複数のステップがあるためですか? )。

問題が何であるかを診断するために、他にどのような手順を実行する必要がありますか?

4

1 に答える 1

1

Ruby 1.9.2では、ロード時間に深刻な回帰がありました。これは、ロードされるファイルの数とともに指数関数的に増加したと思います。これはRailsアプリに大きな打撃を与えました。これが、アセットのコンパイル時間が大幅に増加した原因だと思います。

これは1.9.3で修正されているので、それにアップグレードするか、ロードパッチを1.9.2にバックポートしてみてください。

于 2012-05-20T01:34:40.043 に答える