ActiveRecord "ПОКАЗАТЬ ТАБЛИЦЫ" запросы - PullRequest
2 голосов
/ 15 июля 2011

Я использую Rails 2.3 для своего проекта с Resque для обработки фоновых задач.

ActiveRecord обычно выполняет запрос «ПОКАЗАТЬ ТАБЛИЦЫ» и «ПОКАЗАТЬ ПОЛЯ ИЗ» при первом использовании любой модели, а затем кэширует ее. Моя проблема в том, что Resque разветвляет новый процесс для каждого задания, поэтому он никогда не кэшируется, и ActiveRecords снова запускает эти запросы для каждого задания.

Каков рекомендуемый способ заставить ActiveRecord кэшировать эти запросы? Добавление "Model.inspect" для большинства моих моделей в инициализаторе помогает, но несколько запросов "ПОКАЗАТЬ ТАБЛИЦЫ" все еще остаются.

1 Ответ

1 голос
/ 28 августа 2011

В задачу rake, в которой вы должны выполнить инициализацию среды для resque, добавьте следующий фрагмент:

  # 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
...