ar-simple-idmap 0.2.2 → 0.2.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/.gitignore CHANGED
@@ -1,4 +1,7 @@
1
1
  spec/debug.log
2
2
  .DS_Store
3
- spec/db/*.sqlite*
3
+ spec/*.sqlite*
4
+ pkg
5
+ rdoc
6
+ testapp
4
7
  *~
data/README CHANGED
@@ -1,10 +1,8 @@
1
- IdentityMap
2
- ===========
1
+ = IdentityMap
3
2
 
4
3
  Adds simple hand controlled identity map for ActiveRecord.
5
4
 
6
- Installing
7
- ==========
5
+ == Installing
8
6
 
9
7
  in Rails 2.3 in config/environment.rb
10
8
 
@@ -14,8 +12,7 @@ in Rails 3 in Gemfile
14
12
 
15
13
  gem 'ar-simple-idmap', :require => 'identity_map'
16
14
 
17
- Enabling
18
- ========
15
+ == Enabling
19
16
 
20
17
  To enable in ApplicationController (it is not enabled by default).
21
18
 
@@ -73,10 +70,17 @@ you could temporary disable it:
73
70
  # all things here goes without identity map
74
71
  # not only for Client
75
72
  end
73
+
74
+ class ClientsController
75
+ def strange_action
76
+ without_identity_map do
77
+ do_strange_things_without_identity_map
78
+ end
79
+ end
80
+ end
76
81
 
77
82
 
78
- Copyright
79
- =========
83
+ == Copyright
80
84
 
81
85
  inspired by http://github.com/pjdavis/identity-map
82
86
  Copyright (c) 2010 Sokolov Yura aka funny_falcon, released under the MIT license.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.2.2
1
+ 0.2.4
@@ -1,54 +1,116 @@
1
- module ActionController
2
- class Base
3
- module IdentityMap
4
- module InstanceMethods
5
- def with_identity_map
6
- ActiveRecord::Base.with_id_map {
7
- yield
8
- }
9
- end
10
-
11
- def without_identity_map
12
- ActiveRecord::Base.without_id_map {
13
- yield
14
- }
15
- end
16
- end
17
-
18
- module ClassMethods
19
- def use_identity_map(*args)
20
- around_filter :with_identity_map, *args
21
- end
22
-
23
- def dont_use_identity_map(*args)
24
- around_filter :without_identity_map, *args
25
- end
26
-
27
- def use_dispater_identity_map
28
- if defined? ::ActionDispatch
29
- ActionDispatch::Callbacks.before :create_identity_map
30
- ActionDispatch::Callbacks.after :remove_identity_map
31
- else
32
- ActionController::Dispatcher.before_dispatch :create_identity_map
33
- ActionController::Dispatcher.after_dispatch :remove_identity_map
34
- end
35
- end
36
- end
37
-
1
+ module ActionController # :nodoc:
2
+ class Base # :nodoc:
3
+ module IdentityMap # :nodoc:
4
+ module InstanceMethods
5
+ # Execute block with identity map.
6
+ #
7
+ # If it called with +true+, then new instance of identity map would be used
8
+ # regardless of any present.
9
+ #
10
+ # If it called with +false+, then it only ensures that identity map created if absent.
11
+ #
12
+ # Default is +true+
13
+ #
14
+ # Typical usage is around filter, which is most times better than direct call.
15
+ #
16
+ # Usage:
17
+ # class ThingsController
18
+ # def action1
19
+ # with_identity_map do
20
+ # #some_actions
21
+ # end
22
+ # end
23
+ # #around_filter :with_identity_map, :only => :action2
24
+ # use_identity_map :only => :action2
25
+ # def action2
26
+ # #some_actions
27
+ # end
28
+ # end
29
+ #
30
+ # Method declared as a helper method, so could be used in a views.
31
+ def with_identity_map( fresh = true )
32
+ ActiveRecord::Base.with_id_map(fresh) {
33
+ yield
34
+ }
35
+ end
36
+
37
+ # Temporary disables identity map.
38
+ #
39
+ # Could be used if identity map introduced undesired behaviour.
40
+ #
41
+ # Usage:
42
+ # class ThingsController
43
+ # def action1
44
+ # without_identity_map do
45
+ # #some_actions
46
+ # end
47
+ # end
48
+ # around_filter :without_identity_map, :only => :action2
49
+ # def action2
50
+ # #some_actions
51
+ # end
52
+ # end
53
+ # Method declared as a helper method, so could be used in a views.
54
+ def without_identity_map
55
+ ActiveRecord::Base.without_id_map {
56
+ yield
57
+ }
58
+ end
59
+ end
60
+
61
+ module ClassMethods
62
+ # Puts around filter which is enable identity map usage for actions.
63
+ #
64
+ # <tt>use_identity_map *args</tt> is shorthand for <tt>around_filter :with_identity_map, *args</tt>
65
+ #
66
+ # Typically you could put it in a ApplicationController
67
+ # class ApplicationController
68
+ # use_identity_map
69
+ # end
70
+ def use_identity_map(*args)
71
+ around_filter :with_identity_map, *args
72
+ end
73
+
74
+ # Puts around filter which is disable identity map usage for actions.
75
+ #
76
+ # <tt>dont_use_identity_map *args</tt> is shorthand for <tt>around_filter :without_identity_map, *args</tt>
77
+ #
78
+ # Typically you would call it if undesired behaviour were introduced by identity_map
79
+ # class ThingsController
80
+ # dont_use_identity_map :only => :some_strange_action
81
+ # end
82
+ def dont_use_identity_map(*args)
83
+ around_filter :without_identity_map, *args
84
+ end
85
+
86
+ # Put identity map creation onto lower level, actually on a dispatcher
87
+ # may be for use in a Metal or Rack actions
88
+ def use_dispatcher_identity_map
89
+ if defined? ::ActionDispatch
90
+ ActionDispatch::Callbacks.before :create_identity_map
91
+ ActionDispatch::Callbacks.after :remove_identity_map
92
+ else
93
+ ActionController::Dispatcher.before_dispatch :create_identity_map
94
+ ActionController::Dispatcher.after_dispatch :remove_identity_map
95
+ end
96
+ end
97
+ end
98
+
38
99
 
39
- end
40
- extend IdentityMap::ClassMethods
41
- include IdentityMap::InstanceMethods
100
+ end
101
+ extend IdentityMap::ClassMethods
102
+ include IdentityMap::InstanceMethods
103
+ helper_method :with_identity_map, :without_identity_map
42
104
  end
43
105
  end
44
-
106
+ # :enddoc:
45
107
  module DispatcherMethods
46
108
  def create_identity_map
47
- ActiveRecord::Base.create_identity_map
109
+ ActiveRecord::Base.create_identity_map
48
110
  end
49
111
 
50
112
  def remove_identity_map
51
- ActiveRecord::Base.drop_identity_map
113
+ ActiveRecord::Base.drop_identity_map
52
114
  end
53
115
  end
54
116
 
@@ -1,22 +1,37 @@
1
- module ActiveRecord
2
- class Base
3
- module IdentityMap
1
+ module ActiveRecord # :nodoc:
2
+ class Base # :nodoc:
3
+ module IdentityMap # :nodoc:
4
4
  module ClassMethods
5
5
  private
6
- def use_id_map
6
+ # Prepares model for work with identity map.
7
+ # If you want to turn on identity map for certain classes (recomended)
8
+ # you should do like this:
9
+ #
10
+ # class Address
11
+ # use_id_map
12
+ # end
13
+ #
14
+ # If you want to turn on identity map for all ActiveRecord models (not recomended)
15
+ # you should put in some initializator:
16
+ #
17
+ # class ActiveRecord::Base
18
+ # use_id_map
19
+ # end
20
+ def use_id_map() # :doc:
7
21
  unless is_a? IdMapClassMethods
8
- extend IdMapClassMethods
9
- include IdMapInstanceMethods
10
- class << self
11
- alias_method_chain :find, :identity_map
12
- alias_method_chain :instantiate, :identity_map
13
- end
14
- alias_method_chain :create, :identity_map
15
- alias_method_chain :destroy, :identity_map
22
+ extend IdMapClassMethods
23
+ include IdMapInstanceMethods
24
+ class << self
25
+ alias_method_chain :find, :identity_map
26
+ alias_method_chain :instantiate, :identity_map
27
+ end
28
+ alias_method_chain :create, :identity_map
29
+ alias_method_chain :destroy, :identity_map
16
30
  end
17
31
  end
18
32
  end
19
33
 
34
+ # :enddoc:
20
35
  module IdMapClassMethods
21
36
 
22
37
  def id_map
@@ -29,10 +44,17 @@ module ActiveRecord
29
44
  end
30
45
 
31
46
  private
47
+
48
+ def fetch_single(map, id)
49
+ if (obj = map[id]) && obj.attribute_names == column_names
50
+ obj
51
+ end
52
+ end
53
+
32
54
  def fetch_from_map(map, ids)
33
55
  result, not_cached = [], []
34
56
  ids.each do |id|
35
- if ( obj = map[id] )
57
+ if ( obj = fetch_single(map, id) )
36
58
  result << obj
37
59
  else
38
60
  not_cached << id
@@ -74,7 +96,7 @@ module ActiveRecord
74
96
  end
75
97
  end
76
98
  else
77
- map[ids]
99
+ fetch_single(map, ids)
78
100
  end
79
101
  end
80
102
  end || find_without_identity_map(*args)
@@ -1,89 +1,116 @@
1
- module ActiveRecord
2
- class Base
3
- module ThreadIdentityMap
4
- class ClassIdMap
5
- def initialize(klass)
6
- @objects = {}
7
- @object = klass.allocate
8
- @object.instance_variable_set(:@attributes, {:id=>nil})
9
- @object.instance_variable_set(:@attributes_cache, {})
10
- end
11
-
12
- def [](id)
13
- @object.id = id
14
- @objects[@object.id]
15
- end
16
-
17
- def []=(id, v)
18
- @object.id = id
19
- @objects[@object.id] = v
20
- end
21
-
22
- def delete(id)
23
- @object.id = id
24
- @objects.delete(@object.id)
25
- end
26
- end
27
-
28
- class IdMap
29
-
30
- def initialize
31
- @objects = {}
32
- end
33
-
34
- def for_class(klass)
35
- @objects[ klass.base_class ] ||= ClassIdMap.new(klass)
36
- end
37
-
38
- end
39
-
40
- module ClassMethods
41
- def create_identity_map
42
- set_thread_id_map IdMap.new
43
- end
44
-
45
- def drop_identity_map
46
- set_thread_id_map nil
47
- end
48
-
49
- def with_id_map( fresh = true)
50
- old = thread_id_map
51
- create_identity_map if fresh || old.nil?
52
- yield
53
- ensure
54
- set_thread_id_map old
55
- end
56
-
57
- def without_id_map
58
- old = thread_id_map
59
- drop_identity_map
60
- yield
61
- ensure
62
- set_thread_id_map old
63
- end
64
-
65
- # def uncached_with_identity_map( &block )
66
- # without_id_map do
67
- # uncached_without_identity_map &block
68
- # end
69
- # end
70
-
71
- protected
72
-
73
- def thread_id_map
74
- Thread.current[:ar_identity_map]
75
- end
76
-
77
- def thread_id_map=(v)
78
- Thread.current[:ar_identity_map] = v
79
- end
80
-
81
- alias set_thread_id_map thread_id_map=
82
-
83
- end
1
+ module ActiveRecord # :nodoc:
2
+ class Base # :nodoc:
3
+ module ThreadIdentityMap # :nodoc:
4
+ # ClassIdMap do the job of properly use typecasted +id+ value of model object
5
+ # for search in a cache
6
+ class ClassIdMap
7
+ def initialize(klass)
8
+ @objects = {}
9
+ @object = klass.allocate
10
+ @object.instance_variable_set(:@attributes, {:id=>nil})
11
+ @object.instance_variable_set(:@attributes_cache, {})
12
+ end
13
+
14
+ def [](id)
15
+ @object.id = id
16
+ @objects[@object.id]
17
+ end
18
+
19
+ def []=(id, v)
20
+ @object.id = id
21
+ @objects[@object.id] = v
22
+ end
23
+
24
+ def delete(id)
25
+ @object.id = id
26
+ @objects.delete(@object.id)
27
+ end
28
+ end
29
+
30
+ # Manages separated object caches for each model
31
+ class IdMap
32
+
33
+ def initialize
34
+ @objects = {}
35
+ end
36
+
37
+ def for_class(klass)
38
+ @objects[ klass.base_class ] ||= ClassIdMap.new(klass)
39
+ end
40
+
41
+ end
42
+
43
+ module ClassMethods
44
+ # Creates new identity map and put it in thread local storage
45
+ #
46
+ # For most use cases +with_id_map+ should be used instead.
47
+ #
48
+ # Usage:
49
+ # ActiveRecord::Base.create_identity_map
50
+ def create_identity_map
51
+ set_thread_id_map IdMap.new
52
+ end
53
+
54
+ # Remove identity map from thread local storage
55
+ #
56
+ # For most use cases +without_id_map+ should be used instead.
57
+ #
58
+ # Usage:
59
+ # ActiveRecord::Base.drop_identity_map
60
+ def drop_identity_map
61
+ set_thread_id_map nil
62
+ end
63
+
64
+ # Execute block with identity map.
65
+ #
66
+ # If it called with +true+, then new instance of identity map would be used
67
+ # regardless of any present.
68
+ #
69
+ # If it called with +false+, then it only ensures that identity map created if absent.
70
+ #
71
+ # Default is +true+
72
+ #
73
+ # Usage:
74
+ # ActiveRecord::Base.with_id_map do
75
+ # #do_some_actions
76
+ # end
77
+ def with_id_map( fresh = true)
78
+ old = thread_id_map
79
+ create_identity_map if fresh || old.nil?
80
+ yield
81
+ ensure
82
+ set_thread_id_map old
83
+ end
84
+
85
+ # Execute block with identity map turned off.
86
+ #
87
+ # Usage:
88
+ # ActiveRecord::Base.without_id_map do
89
+ # #do_some_actions
90
+ # end
91
+ def without_id_map
92
+ old = thread_id_map
93
+ drop_identity_map
94
+ yield
95
+ ensure
96
+ set_thread_id_map old
97
+ end
98
+
99
+ protected
100
+
101
+ def thread_id_map
102
+ Thread.current[:ar_identity_map]
103
+ end
104
+
105
+ def thread_id_map=(v)
106
+ Thread.current[:ar_identity_map] = v
107
+ end
108
+
109
+ alias set_thread_id_map thread_id_map=
110
+
111
+ end
84
112
  end
85
-
86
- extend ThreadIdentityMap::ClassMethods
87
- # self.class.send :alias_method_chain, :uncached, :identity_map
113
+
114
+ extend ThreadIdentityMap::ClassMethods
88
115
  end
89
116
  end
@@ -12,124 +12,132 @@ describe "Customers" do
12
12
  c1.__id__.should == c2.__id__
13
13
  end
14
14
 
15
- it "should fetch loaded model from cache" do
16
- c1 = Customer.first
17
- Customer.connection.should_not_receive(:select_all)
18
- c2 = Customer.find(c1.id)
19
- end
15
+ it "should fetch loaded model from cache" do
16
+ c1 = Customer.first
17
+ Customer.connection.should_not_receive(:select_all)
18
+ c2 = Customer.find(c1.id)
19
+ end
20
20
 
21
21
  it "should work for has_many associations" do
22
22
  p1 = PhoneNumber.first
23
23
  ps = Customer.first.phone_numbers
24
- p2 = ps.first
24
+ p2 = ps.first
25
25
  p1.__id__.should == p2.__id__
26
26
  end
27
27
 
28
28
  it "should work for belongs_to assocations" do
29
29
  d1 = Customer.first
30
30
  p1 = PhoneNumber.first
31
- Customer.connection.should_not_receive(:select_all)
32
- d2 = p1.customer
31
+ Customer.connection.should_not_receive(:select_all)
32
+ d2 = p1.customer
33
33
  d1.__id__.should == d2.target.__id__
34
34
  end
35
35
 
36
- it "should fetch same model with not handled conditions" do
37
- d1 = Customer.first
38
- d2 = Customer.find(:first, :conditions=>["id = ?", d1.id])
39
- d1.__id__.should == d2.__id__
40
- end
36
+ it "should fetch same model with not handled conditions" do
37
+ d1 = Customer.first
38
+ d2 = Customer.find(:first, :conditions=>["id = ?", d1.id])
39
+ d1.__id__.should == d2.__id__
40
+ end
41
+
42
+ it "should refetch to fill missed attributes" do
43
+ d1 = Customer.find(:first, :select => 'id, name')
44
+ d1.read_attribute(:value).should be_nil
45
+ d2 = Customer.find(d1.id)
46
+ d2.__id__.should == d1.__id__
47
+ d1.value.should_not be_nil
48
+ end
41
49
 
42
- describe "creation and deletion:" do
43
- before(:each) do
44
- @billy = Customer.create(:name => "billy")
45
- end
46
-
47
- it "should work for creating objects" do
48
- c2 = Customer.find_by_name("billy")
49
- @billy.__id__.should == c2.__id__
50
- Customer.connection.should_not_receive(:select_all)
51
- c3 = Customer.find(@billy.id)
52
- @billy.__id__.should == c3.__id__
53
- end
54
-
55
- it "should work for destroyed objects" do
56
- @billy.destroy
57
- c2 = Customer.find_by_id(@billy.id)
58
- c2.should be_nil
59
- end
60
-
61
- it "should reload adequatly" do
62
- Customer.connection.update_sql('update customers set value=2;')
63
- @billy.reload
64
- @billy.value.should == 2
65
- end
66
-
67
- it "should leave changed columns" do
68
- @billy.value = 3
69
- b = Customer.find_by_name("billy")
70
- b.value.should == 3
71
- b.value_changed?.should be_true
72
- b.changes.should == {'value'=>[1,3]}
73
- Customer.connection.update_sql('update customers set value=2;')
74
- b = Customer.find_by_name("billy")
75
- b.changes.should == {'value'=>[2,3]}
76
- end
77
-
78
- after(:each) do
79
- @billy.destroy unless @billy.destroyed?
80
- end
50
+ context "creation and deletion:" do
51
+ before(:each) do
52
+ @billy = Customer.create(:name => "billy")
53
+ end
54
+
55
+ it "should work for creating objects" do
56
+ c2 = Customer.find_by_name("billy")
57
+ @billy.__id__.should == c2.__id__
58
+ Customer.connection.should_not_receive(:select_all)
59
+ c3 = Customer.find(@billy.id)
60
+ @billy.__id__.should == c3.__id__
61
+ end
62
+
63
+ it "should work for destroyed objects" do
64
+ @billy.destroy
65
+ c2 = Customer.find_by_id(@billy.id)
66
+ c2.should be_nil
67
+ end
68
+
69
+ it "should reload adequatly" do
70
+ Customer.connection.update_sql('update customers set value=2;')
71
+ @billy.reload
72
+ @billy.value.should == 2
73
+ end
74
+
75
+ it "should leave changed columns" do
76
+ @billy.value = 3
77
+ b = Customer.find_by_name("billy")
78
+ b.value.should == 3
79
+ b.value_changed?.should be_true
80
+ b.changes.should == {'value'=>[1,3]}
81
+ Customer.connection.update_sql('update customers set value=2;')
82
+ b = Customer.find_by_name("billy")
83
+ b.changes.should == {'value'=>[2,3]}
84
+ end
85
+
86
+ after(:each) do
87
+ @billy.destroy unless @billy.destroyed?
88
+ end
81
89
  end
82
90
 
83
- describe "switching identity map:" do
84
- it "should disable id_map with `without_id_map`" do
85
- c1, c2, c3 = Customer.first, nil, nil
86
- Customer.without_id_map do
87
- c2 = Customer.first
88
- c3 = Customer.first
89
- end
90
- c1.__id__.should_not == c2.__id__
91
- c1.__id__.should_not == c3.__id__
92
- c3.__id__.should_not == c2.__id__
93
- end
94
-
95
- it "should use current id_map with `with_id_map(false)`" do
96
- c1, c2, c3 = Customer.first, nil, nil
97
- Customer.with_id_map(false) do
98
- c2 = Customer.first
99
- Customer.connection.should_not_receive(:select_all)
100
- c3 = Customer.find(c2.id)
101
- end
102
- c1.__id__.should == c2.__id__
103
- c1.__id__.should == c3.__id__
104
- c3.__id__.should == c2.__id__
105
- end
106
-
107
- it "should create new id_map with `with_id_map`" do
108
- c1, c2, c3 = Customer.first, nil, nil
109
- Customer.with_id_map do
110
- c2 = Customer.first
111
- Customer.connection.should_not_receive(:select_all)
112
- c3 = Customer.find(c2.id)
113
- end
114
- c1.__id__.should_not == c2.__id__
115
- c1.__id__.should_not == c3.__id__
116
- c3.__id__.should == c2.__id__
117
- end
118
-
119
- it "should reenable id_map with `with_id_map`" do
120
- c1, c2, c3 = Customer.first, nil, nil
121
- Customer.without_id_map do
122
- Customer.with_id_map do
123
- c2 = Customer.first
124
- Customer.connection.should_not_receive(:select_all)
125
- c3 = Customer.find(c2.id)
126
- end
127
- end
128
- c1.__id__.should_not == c2.__id__
129
- c1.__id__.should_not == c3.__id__
130
- c3.__id__.should == c2.__id__
91
+ context "switching identity map:" do
92
+ it "should disable id_map with `without_id_map`" do
93
+ c1, c2, c3 = Customer.first, nil, nil
94
+ Customer.without_id_map do
95
+ c2 = Customer.first
96
+ c3 = Customer.first
97
+ end
98
+ c1.__id__.should_not == c2.__id__
99
+ c1.__id__.should_not == c3.__id__
100
+ c3.__id__.should_not == c2.__id__
101
+ end
102
+
103
+ it "should use current id_map with `with_id_map(false)`" do
104
+ c1, c2, c3 = Customer.first, nil, nil
105
+ Customer.with_id_map(false) do
106
+ c2 = Customer.first
107
+ Customer.connection.should_not_receive(:select_all)
108
+ c3 = Customer.find(c2.id)
109
+ end
110
+ c1.__id__.should == c2.__id__
111
+ c1.__id__.should == c3.__id__
112
+ c3.__id__.should == c2.__id__
113
+ end
114
+
115
+ it "should create new id_map with `with_id_map`" do
116
+ c1, c2, c3 = Customer.first, nil, nil
117
+ Customer.with_id_map do
118
+ c2 = Customer.first
119
+ Customer.connection.should_not_receive(:select_all)
120
+ c3 = Customer.find(c2.id)
121
+ end
122
+ c1.__id__.should_not == c2.__id__
123
+ c1.__id__.should_not == c3.__id__
124
+ c3.__id__.should == c2.__id__
125
+ end
126
+
127
+ it "should reenable id_map with `with_id_map`" do
128
+ c1, c2, c3 = Customer.first, nil, nil
129
+ Customer.without_id_map do
130
+ Customer.with_id_map do
131
+ c2 = Customer.first
132
+ Customer.connection.should_not_receive(:select_all)
133
+ c3 = Customer.find(c2.id)
131
134
  end
135
+ end
136
+ c1.__id__.should_not == c2.__id__
137
+ c1.__id__.should_not == c3.__id__
138
+ c3.__id__.should == c2.__id__
132
139
  end
140
+ end
133
141
 
134
142
  after(:each) do
135
143
  ActiveRecord::Base.drop_identity_map
data/spec/spec.opts CHANGED
@@ -1,4 +1,2 @@
1
1
  --colour
2
- --format progress
3
- --loadby mtime
4
- --reverse
2
+ --format nested
data/spec/spec_helper.rb CHANGED
@@ -1,5 +1,9 @@
1
1
  require 'rubygems'
2
- require 'spec'
2
+ begin
3
+ require 'spec'
4
+ rescue LoadError
5
+ require 'rspec'
6
+ end
3
7
  require 'active_support'
4
8
  require 'active_support/test_case'
5
9
  require 'active_record'
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ar-simple-idmap
3
3
  version: !ruby/object:Gem::Version
4
- hash: 19
4
+ hash: 31
5
5
  prerelease: false
6
6
  segments:
7
7
  - 0
8
8
  - 2
9
- - 2
10
- version: 0.2.2
9
+ - 4
10
+ version: 0.2.4
11
11
  platform: ruby
12
12
  authors:
13
13
  - Sokolov Yura aka funny_falcon
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2010-08-26 00:00:00 +04:00
18
+ date: 2010-09-21 00:00:00 +04:00
19
19
  default_executable:
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency
@@ -48,7 +48,6 @@ files:
48
48
  - VERSION
49
49
  - init.rb
50
50
  - install.rb
51
- - lib/autotest/discover.rb
52
51
  - lib/identity_map.rb
53
52
  - lib/identity_map/action_controller/dispatcher.rb
54
53
  - lib/identity_map/active_record/base.rb
@@ -91,5 +90,5 @@ signing_key:
91
90
  specification_version: 3
92
91
  summary: Simple identity map for ActiveRecord
93
92
  test_files:
94
- - spec/spec_helper.rb
95
93
  - spec/identity_map_spec.rb
94
+ - spec/spec_helper.rb
@@ -1,5 +0,0 @@
1
- $:.push(File.join(File.dirname(__FILE__), %w[.. .. rspec]))
2
-
3
- Autotest.add_discovery do
4
- "rspec"
5
- end