2012-01-13 4 views
0

私はもっと大きなRails 3.1アプリケーションを持っています。これは、開発モードではスローになります。私はクラスのオートローディングを遅らせるために問題の一部を追跡しました。私は私のシステムで数百のモデルを持っており、約130の宝石を使っています。開発中のRailsクラスの読み込みが遅いのはなぜですか?

私のコントローラは、参照クラス名以外は何も(すなわち

def index 
    User 
    Order 
    Game 
    LineItem 
    # and so on... 
    render :text => '' 
end 

ページの負荷はちょうど私の機種の一部で、このために、ほぼ1秒を取ることができないならば、ログのようなものになります。

Completed 200 OK in 762ms (Views: 3.2ms | ActiveRecord: 3.9ms) 

私はRubyの1.9.2と1.9.3でこれをテストしてみた。

+1

それは3.2で扱われるように見えます。 http://weblog.rubyonrails.org/2011/12/20/rails-3-2-rc1-faster-dev-mode-routing-explain-queries-tagged-logger-store – pduey

+0

特に、Rails 3.2は知っています変更されていないクラスのみをリロードすることができます。 –

答えて

1

これは主にRails 3.2で修正されました。

0

まあ、それはあなたがあなたのを再起動する必要はありませんように、それは、あなたのコードを再ロードし、開発モードが何をするかですエバー。

0

これは、開発環境で実行する場合のトレードオフです。パフォーマンスが落ちるのと引き換えに、自動ロード(開発時には非常に便利)になります。プロダクションでは、オートローディングを犠牲にしてパフォーマンスが向上します(これは、プロダクションではそれほど有用ではありません)。

0

これは、開発モードで作業しているときの自動クラスの再読み込みによるものです。これは、コードを変更してページをリフレッシュするときに簡単に行えます。この現象は、config/environment/development.rbファイルのconfig.cache_classesによって管理されています。

# In the development environment your application's code is reloaded on 
# every request. This slows down response time but is perfect for development 
# since you don't have to restart the web server when you make code changes. 
config.cache_classes = false 

config.cache_classesfalseに設定されている場合、Railsはそのクラスのロードにユーザーload文をでしょう。 trueに設定すると、代わりにrequireステートメントが使用されます。

これは、アプリケーションにロードする必要があるすべてのファイルと関係があります。これはrails consoleに入り、$LOAD_PATHと入力すると確認できます。私はあなたがそれのトンを持っていると確信しています。

関連する問題