kissifer-hash-persistent 0.2.1 → 0.2.2

Sign up to get free protection for your applications and to get access to all the features.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.2.1
1
+ 0.2.2
@@ -2,11 +2,11 @@
2
2
 
3
3
  Gem::Specification.new do |s|
4
4
  s.name = %q{hash-persistent}
5
- s.version = "0.2.1"
5
+ s.version = "0.2.2"
6
6
 
7
7
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
8
8
  s.authors = ["kissifer"]
9
- s.date = %q{2009-05-28}
9
+ s.date = %q{2009-06-02}
10
10
  s.email = %q{tierneydrchris@gmail.com}
11
11
  s.extra_rdoc_files = [
12
12
  "LICENSE",
@@ -9,10 +9,13 @@ module HashPersistent
9
9
  end
10
10
 
11
11
  module ClassMethods
12
+ attr_reader :resource_class
13
+
12
14
  def attach(resource_class, collection_basis)
13
15
  raise ArgumentError unless resource_class.included_modules.include?(HashPersistent::Resource)
14
16
  raise ArgumentError unless resource_class.instance_methods.include?(collection_basis.to_s)
15
17
  @collection_basis = collection_basis
18
+ @resource_class = resource_class
16
19
  resource_class.on_save do |resource|
17
20
  collected_resource_saved(resource)
18
21
  end
@@ -46,5 +49,11 @@ module HashPersistent
46
49
  end
47
50
 
48
51
  attr_accessor :collected_keys
52
+
53
+ def collected_resources
54
+ collected_keys.collect do |key|
55
+ self.class.resource_class.send(:find, key)
56
+ end
57
+ end
49
58
  end
50
59
  end
@@ -183,7 +183,28 @@ describe "A class that includes HashPersistent::Collection" do
183
183
 
184
184
  CollectionFoo.find("the_basis").should == nil
185
185
  end
186
+
187
+ it "should be helpful and derefence its keys when asked" do
188
+ CollectionFoo.persist_to({}, "")
189
+ CollectedResource.persist_to({}, "")
190
+
191
+ CollectionFoo.attach(CollectedResource, :basis)
192
+
193
+ resource_1 = CollectedResource.new
194
+ resource_1.basis = "the_basis"
195
+ resource_1.key = "fred"
196
+ resource_1.save
186
197
 
198
+ CollectionFoo.find("the_basis").collected_resources.should == [resource_1]
199
+
200
+ resource_2 = CollectedResource.new
201
+ resource_2.basis = "the_basis"
202
+ resource_2.key = "barney"
203
+ resource_2.save
204
+
205
+ CollectionFoo.find("the_basis").collected_resources.should == [resource_1, resource_2]
206
+
207
+ end
187
208
  end
188
209
 
189
210
  context "(concurrent access)" do
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: kissifer-hash-persistent
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.1
4
+ version: 0.2.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - kissifer
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2009-05-28 00:00:00 -07:00
12
+ date: 2009-06-02 00:00:00 -07:00
13
13
  default_executable:
14
14
  dependencies: []
15
15