2

私はプロジェクトにRails2.3を使用しており、バックグラウンドタスクの処理にはResqueを使用しています。

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

ActiveRecordにこれらのクエリをキャッシュさせるための推奨される方法は何ですか?イニシャライザでほとんどのモデルに「Model.inspect」を追加すると役立ちますが、「SHOWTABLES」クエリがいくつか残っています。

4

1 に答える 1

1

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

たとえば、次のようにしますlib/tasks/resque.rake

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
于 2011-08-28T00:03:54.110 に答える