2011-07-15 9 views
2

私のプロジェクトではResqueを使ってバックグラウンドタスクを処理しています。ActiveRecordの "SHOW TABLES"クエリ

ActiveRecordは、通常、最初にモデルを使用したときに「SHOW TABLES」および「SHOW FIELDS FROM」クエリを実行してからキャッシュします。私の問題は、Resqueがすべてのジョブに対して新しいプロセスをフォークするので、これは決してキャッシュされず、ActiveRecordはこれらのクエリをすべてのジョブで再度実行するということです。

ActiveRecordにこれらのクエリを強制的にキャッシュさせるための推奨方法は何ですか? 私のモデルのほとんどの "Model.inspect"をイニシャライザに追加すると役立ちますが、いくつかの "SHOW TABLES"クエリは残っています。 lib/tasks/resque.rakeに例えば

# Make sure we've pre-loaded all of the schema information 
    Resque.before_first_fork do 
    ActiveRecord::Base.send(:subclasses).each { |klass| klass.columns } 
    end 

、::あなたはresqueのための環境の初期化を行う必要があり、あなたのrakeタスクで

答えて

1

は、次のコードを追加します

task :resque_environment => :environment do 
    # Make sure we've pre-loaded all of the schema information 
    Resque.before_first_fork do 
    ActiveRecord::Base.send(:subclasses).each { |klass| klass.columns } 
    end 
end 
関連する問題