Skip to content

funny-falcon/identity-map

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

61 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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

About

A simple implementation of an Identity Mapper for Active Record.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Ruby 100.0%