web-dev-qa-db-ja.com

Rails 3.1はアセットのために開発モードで非常に遅いです、どうすればよいですか?

スプロケットを追加した後、Railsは開発モードで非常に遅くロードされます、それをスピードアップするにはどうすればよいですか?

40
jonepatr

https://github.com/wavii/Rails-dev-tweaks をご覧ください。

Railsは、開発モードのすべてのSprocketsアセットリクエストですべてのto_prepareフックを実行しています。これには、コードの自動(再)ロードなどが含まれ、さまざまなgemがそこでも機能します。

Rails-dev-tweaksは、アセットリクエストでto_prepareとリロードを無効にします(そして他のいくつか-READMEの最初の部分を読み取ります)。適切なサイズのプロジェクトでは、開発環境を大幅に高速化します。必要な追加のリクエストに対してこれを行うように構成することもできます

51
Nevir

この問題に関するいくつかのGoogleの結果を参照した後、DNSの問題がどこにあるのかを突き止めました。

問題は次のとおりです:Railsは逆引き参照を行っています。したがって、直接IPから要求する場合、またはブラウザーを備えたマシンのみの/ etc/hosts内のホスト名を要求する場合、これはよく行います。一緒にスローされたVMですべてを実行し、そのIPが開発サーバーですぐに解決されないため、Railsは、すべての要求を待機します。

この話の教訓?開発サーバー(つまり、Railsを実行しているサーバー)での開発に関連するすべてのIPの/ etc/hostsエントリを含めます。これは、先に進んで、すべての偽の/仮想/その他のホストエントリを作成することを意味します... Railsテストに関与すると予想される開発サーバー上のIPは、リクエストなどをログに記録するためです。 、逆ルックアップを実行します。これを高速にする必要があります。

5
Randy Wallace

私のために働いた奇妙な解決策。私は通常、hostsファイルに設定されているmyapp.local:3000を介して、開発中のアプリに移動しました。アセットの読み込みが途方もなく遅くなりました。

127.0.0.1:3000を介してアプリに移動すると、アセットがすばやく読み込まれ、さらに、ローカルIPを1回使用した後、myapp.local:3000を使用して移動でき、アセットが非常に高速に読み込まれました。

理由をお話しできればと思いますが、それが誰かの助けになることを願っています。私はOSX10.7.5を使用しています。

1
nelsonenzo

本番環境でどれだけ速く実行されるかを見ましたか?開発環境は、テストや本番環境とは動作が異なり、そのためにパフォーマンスへの影響が大きくなります。より多くの情報がなければ、より良い答えを提供することはできません。

0
Adam Eberlin

こちらのターボスプロケットもチェックしてください--- https://github.com/ndbroadbent/turbo-sprockets-Rails

それは有望に見えます。

0
trisweb