针对Web请求的Mongoid identity_map,但是关闭后台或rake任务?

时间:2012-02-22 08:19:55

标签: mongoid

是否有办法为web请求启用identity_map,但默认情况下在控制台或rake任务中关闭?这似乎让我绊倒了。

这是针对mongoid和rails。

1 个答案:

答案 0 :(得分:1)

如果向上移动到mongoid 3.0.0.rc,则可以重写方法 using_identity_map 以提供您想要的内容。 注意事项。

配置/初始化/ identity_map.rb

module Mongoid
  module UnitOfWork
    def using_identity_map?
      Mongoid.identity_map_enabled? && Threaded.identity_map_enabled? && (! defined? IRB) && ($0 !~ %r{rake})
    end
  end
end

的Gemfile

source 'https://rubygems.org'

gem 'rails', '3.2.3'
gem 'jquery-rails'
gem 'builder', '3.0.0'
gem 'mongoid', '3.0.0.rc'
gem 'bson_ext'

请注意,3.0.0的配置文件明显不同, 并且默认模板目前仅设置开发 并缺少测试和生产部分。

using_identity_map 方法在3.0.0之前不可用,例如2.4.10, 您必须通过.irbrc或Rakefile显式重置 identity_map_enabled