【问题标题】:ActiveRecord "SHOW TABLES" queriesActiveRecord "SHOW TABLES" 查询
【发布时间】:2011-10-06 09:33:29
【问题描述】:

我的项目使用 Rails 2.3,Resque 用于处理后台任务。

ActiveRecord 通常在您第一次使用任何模型时执行“SHOW TABLES”和“SHOW FIELDS FROM”查询,然后缓存它。我的问题是 Resque 为每个作业都派生了一个新进程,因此它永远不会被缓存,并且 ActiveRecords 会在每个作业上再次运行这些查询。

强制 ActiveRecord 缓存这些查询的推荐方法是什么? 在初始化程序中为我的大多数模型添加“Model.inspect”会有所帮助,但仍然存在一些“SHOW TABLES”查询。

【问题讨论】:

    标签: activerecord resque


    【解决方案1】:

    在您必须为 resque 进行环境初始化的 rake 任务中,添加以下 sn-p:

      # 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
    

    【讨论】:

      猜你喜欢
      • 2012-07-23
      • 2013-05-29
      • 2019-03-22
      • 2021-08-07
      • 2012-04-04
      • 2023-04-01
      • 2014-09-25
      • 1970-01-01
      • 2012-10-17
      相关资源
      最近更新 更多