0.01
No commit activity in last 3 years
No release in over 3 years
Add simple finegrained handcontrolled identity map for ActiveRecord
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
 Dependencies

Runtime

 Project Readme
= IdentityMap

Adds simple hand controlled identity map for ActiveRecord.

== Installing

in Rails 2.3 in config/environment.rb

    config.gem 'ar-simple-idmap', :lib => 'identity_map'
    
in Rails 3 in Gemfile

    gem 'ar-simple-idmap', :require => 'identity_map'

== Enabling
    
To enable in ApplicationController (it is not enabled by default).

    class ApplicationController < ActionController::Base
      use_identity_map #(installs around filter)
      # or use_identity_map :only=>[:index, :show]
      # or use_identity_map :except=>[:update]
    end
    
If you decide to disable filter in sub controllers:

    class ClientController < ApplicationController
      dont_use_identity_map :only=>[:save, :update, :messy_action]
    end

Then you should enable identity map for each model class individually:

    class TarifPlan < ActiveRecord::Base
      use_id_map
      has_many :clients
    end
    
    class Client < ActiveRecord::Base
      use_id_map
      belongs_to :tarif_plan
    end

You can use identity map for all models by writing in initializer:

    class ActiveRecord::Base
      use_id_map
    end
    
To enable in rake task or script:

    ActiveRecord::Base.with_id_map do
      # all things here goes with identity map
    end

or equivalently

    Client.with_id_map do
      # all things here goes with identity map
      # not only for Client
    end

If you found that identity logic does wrong thing in some particular place,
you could temporary disable it:

    ActiveRecord::Base.without_id_map do
      # all things here goes without identity map
    end

    Client.without_id_map do
      # all things here goes without identity map
      # not only for Client
    end
    
    class ClientsController
      def strange_action
        without_identity_map do
          do_strange_things_without_identity_map
        end
      end
    end


== Copyright

inspired by http://github.com/pjdavis/identity-map
Copyright (c) 2010 Sokolov Yura aka funny_falcon, released under the MIT license.