toystore 0.6.5 → 0.6.6
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/lib/toy/identity.rb +15 -11
- data/lib/toy/plugins.rb +18 -9
- data/lib/toy/store.rb +1 -1
- data/lib/toy/version.rb +1 -1
- data/spec/toy/identity_spec.rb +4 -7
- data/spec/toy/plugins_spec.rb +2 -2
- metadata +7 -8
data/lib/toy/identity.rb
CHANGED
@@ -9,23 +9,27 @@ module Toy
|
|
9
9
|
module ClassMethods
|
10
10
|
def key(name_or_factory = :uuid)
|
11
11
|
@key_factory = case name_or_factory
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
else
|
18
|
-
if name_or_factory.respond_to?(:next_key) &&
|
19
|
-
name_or_factory.respond_to?(:key_type)
|
20
|
-
name_or_factory
|
12
|
+
when :uuid
|
13
|
+
UUIDKeyFactory.new
|
14
|
+
when :object_id
|
15
|
+
require 'toy/identity/object_id_key_factory'
|
16
|
+
ObjectIdKeyFactory.new
|
21
17
|
else
|
22
|
-
|
18
|
+
if name_or_factory.respond_to?(:next_key) &&
|
19
|
+
name_or_factory.respond_to?(:key_type)
|
20
|
+
name_or_factory
|
21
|
+
else
|
22
|
+
raise InvalidKeyFactory.new(name_or_factory)
|
23
|
+
end
|
23
24
|
end
|
24
|
-
end
|
25
25
|
attribute :id, @key_factory.key_type
|
26
26
|
@key_factory
|
27
27
|
end
|
28
28
|
|
29
|
+
def key_factory
|
30
|
+
@key_factory || raise('Set your key_factory using key(...)')
|
31
|
+
end
|
32
|
+
|
29
33
|
def key_type
|
30
34
|
@key_factory.key_type
|
31
35
|
end
|
data/lib/toy/plugins.rb
CHANGED
@@ -1,23 +1,32 @@
|
|
1
1
|
module Toy
|
2
2
|
def models
|
3
|
-
|
3
|
+
Toy::Store.direct_descendants
|
4
4
|
end
|
5
5
|
|
6
6
|
def plugins
|
7
|
-
|
7
|
+
Toy::Store.plugins
|
8
8
|
end
|
9
9
|
|
10
10
|
def plugin(mod)
|
11
|
-
Toy.
|
12
|
-
plugins << mod
|
11
|
+
Toy::Store.plugin(mod)
|
13
12
|
end
|
14
13
|
|
15
14
|
module Plugins
|
16
|
-
|
15
|
+
include ActiveSupport::DescendantsTracker
|
17
16
|
|
18
|
-
|
19
|
-
|
20
|
-
|
17
|
+
def plugins
|
18
|
+
@plugins ||= []
|
19
|
+
end
|
20
|
+
|
21
|
+
def plugin(mod)
|
22
|
+
include(mod)
|
23
|
+
direct_descendants.each {|model| model.send(:include, mod) }
|
24
|
+
plugins << mod
|
25
|
+
end
|
26
|
+
|
27
|
+
def included(base=nil, &block)
|
28
|
+
direct_descendants << base if base
|
29
|
+
super
|
21
30
|
end
|
22
31
|
end
|
23
|
-
end
|
32
|
+
end
|
data/lib/toy/store.rb
CHANGED
@@ -1,6 +1,7 @@
|
|
1
1
|
module Toy
|
2
2
|
module Store
|
3
3
|
extend ActiveSupport::Concern
|
4
|
+
extend Plugins
|
4
5
|
|
5
6
|
included do
|
6
7
|
extend ActiveModel::Naming
|
@@ -9,7 +10,6 @@ module Toy
|
|
9
10
|
include Identity
|
10
11
|
include Persistence
|
11
12
|
include MassAssignmentSecurity
|
12
|
-
include Plugins
|
13
13
|
include Dolly
|
14
14
|
include Dirty
|
15
15
|
include Equality
|
data/lib/toy/version.rb
CHANGED
data/spec/toy/identity_spec.rb
CHANGED
@@ -18,14 +18,11 @@ describe Toy::Identity do
|
|
18
18
|
end
|
19
19
|
|
20
20
|
it "should use Toy.key_factory by default" do
|
21
|
-
key_factory = Toy::Identity::
|
21
|
+
key_factory = Toy::Identity::ObjectIdKeyFactory.new
|
22
22
|
Toy.key_factory = key_factory
|
23
|
-
|
24
|
-
|
25
|
-
key_factory.
|
26
|
-
klass.next_key
|
27
|
-
|
28
|
-
Toy.key_factory = nil
|
23
|
+
Class.new do
|
24
|
+
include Toy::Store
|
25
|
+
end.key_factory.should be_instance_of(Toy::Identity::ObjectIdKeyFactory)
|
29
26
|
end
|
30
27
|
end
|
31
28
|
|
data/spec/toy/plugins_spec.rb
CHANGED
@@ -4,7 +4,7 @@ describe Toy::Plugins do
|
|
4
4
|
uses_constants('User', 'Game')
|
5
5
|
|
6
6
|
it "keeps track of class that include toy store" do
|
7
|
-
Toy.models.should == [User, Game]
|
7
|
+
Toy.models.should == [User, Game]
|
8
8
|
end
|
9
9
|
|
10
10
|
describe ".plugin" do
|
@@ -27,7 +27,7 @@ describe Toy::Plugins do
|
|
27
27
|
end
|
28
28
|
|
29
29
|
it "adds plugin to plugins" do
|
30
|
-
Toy.plugins.should == [@mod]
|
30
|
+
Toy.plugins.should == [@mod]
|
31
31
|
end
|
32
32
|
|
33
33
|
it "adds plugins to classes declared after plugin was called" do
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: toystore
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
5
|
-
prerelease:
|
4
|
+
hash: 11
|
5
|
+
prerelease:
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 6
|
9
|
-
-
|
10
|
-
version: 0.6.
|
9
|
+
- 6
|
10
|
+
version: 0.6.6
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Geoffrey Dagley
|
@@ -16,8 +16,7 @@ autorequire:
|
|
16
16
|
bindir: bin
|
17
17
|
cert_chain: []
|
18
18
|
|
19
|
-
date: 2011-
|
20
|
-
default_executable:
|
19
|
+
date: 2011-05-08 00:00:00 Z
|
21
20
|
dependencies:
|
22
21
|
- !ruby/object:Gem::Dependency
|
23
22
|
name: adapter
|
@@ -216,7 +215,6 @@ files:
|
|
216
215
|
- specs.watchr
|
217
216
|
- test/lint_test.rb
|
218
217
|
- toystore.gemspec
|
219
|
-
has_rdoc: true
|
220
218
|
homepage: http://github.com/newtoy/toystore
|
221
219
|
licenses: []
|
222
220
|
|
@@ -246,7 +244,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
246
244
|
requirements: []
|
247
245
|
|
248
246
|
rubyforge_project:
|
249
|
-
rubygems_version: 1.
|
247
|
+
rubygems_version: 1.7.2
|
250
248
|
signing_key:
|
251
249
|
specification_version: 3
|
252
250
|
summary: An object mapper for anything that can read, write and delete data
|
@@ -301,3 +299,4 @@ test_files:
|
|
301
299
|
- spec/toy/validations_spec.rb
|
302
300
|
- spec/toy_spec.rb
|
303
301
|
- test/lint_test.rb
|
302
|
+
has_rdoc:
|