mongoid_alize 0.2.0 → 0.3.1
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/config/locales/en.yml +1 -0
- data/lib/mongoid/alize/callback.rb +48 -13
- data/lib/mongoid/alize/callbacks/from/many.rb +5 -5
- data/lib/mongoid/alize/callbacks/from/one.rb +14 -31
- data/lib/mongoid/alize/errors/invalid_configuration.rb +16 -0
- data/lib/mongoid/alize/from_callback.rb +4 -2
- data/lib/mongoid/alize/instance_helpers.rb +25 -0
- data/lib/mongoid/alize/macros.rb +65 -42
- data/lib/mongoid/alize/to_callback.rb +104 -9
- data/lib/mongoid_alize.rb +3 -7
- data/spec/app/models/head.rb +17 -1
- data/spec/app/models/mock_object.rb +6 -0
- data/spec/app/models/person.rb +16 -0
- data/spec/helpers/macros_helper.rb +11 -7
- data/spec/mongoid/alize/callback_spec.rb +62 -6
- data/spec/mongoid/alize/callbacks/from/one_spec.rb +41 -43
- data/spec/mongoid/alize/callbacks/to/many_from_many_spec.rb +23 -17
- data/spec/mongoid/alize/callbacks/to/many_from_one_spec.rb +158 -60
- data/spec/mongoid/alize/callbacks/to/one_from_many_spec.rb +110 -42
- data/spec/mongoid/alize/callbacks/to/one_from_one_spec.rb +167 -47
- data/spec/mongoid/alize/instance_helpers_spec.rb +36 -0
- data/spec/mongoid/alize/macros_spec.rb +90 -17
- data/spec/mongoid/alize/to_callback_spec.rb +87 -18
- data/spec/mongoid_alize_spec.rb +245 -26
- data/spec/spec_helper.rb +3 -1
- metadata +6 -8
- data/lib/mongoid/alize/callbacks/to/many_from_many.rb +0 -16
- data/lib/mongoid/alize/callbacks/to/many_from_one.rb +0 -15
- data/lib/mongoid/alize/callbacks/to/one_from_many.rb +0 -15
- data/lib/mongoid/alize/callbacks/to/one_from_one.rb +0 -15
- data/lib/mongoid/alize/to_many_callback.rb +0 -50
- data/lib/mongoid/alize/to_one_callback.rb +0 -43
data/spec/spec_helper.rb
CHANGED
@@ -27,6 +27,8 @@ RSpec.configure do |config|
|
|
27
27
|
}
|
28
28
|
|
29
29
|
[Head, Person].each do |klass|
|
30
|
+
klass.alize_from_callbacks = []
|
31
|
+
klass.alize_to_callbacks = []
|
30
32
|
klass.reset_callbacks(:save)
|
31
33
|
klass.reset_callbacks(:create)
|
32
34
|
klass.reset_callbacks(:destroy)
|
@@ -35,7 +37,7 @@ RSpec.configure do |config|
|
|
35
37
|
persistent_fields[Object]).include?(field.to_sym)
|
36
38
|
end
|
37
39
|
klass.instance_methods.each do |method|
|
38
|
-
if method =~ /^_?denormalize_/
|
40
|
+
if method =~ /^_?denormalize_/ && method !~ /_all$/
|
39
41
|
klass.send(:undef_method, method)
|
40
42
|
end
|
41
43
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mongoid_alize
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.1
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-
|
12
|
+
date: 2012-07-29 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: mongoid
|
@@ -53,20 +53,17 @@ files:
|
|
53
53
|
- lib/mongoid/alize/callback.rb
|
54
54
|
- lib/mongoid/alize/callbacks/from/many.rb
|
55
55
|
- lib/mongoid/alize/callbacks/from/one.rb
|
56
|
-
- lib/mongoid/alize/callbacks/to/many_from_many.rb
|
57
|
-
- lib/mongoid/alize/callbacks/to/many_from_one.rb
|
58
|
-
- lib/mongoid/alize/callbacks/to/one_from_many.rb
|
59
|
-
- lib/mongoid/alize/callbacks/to/one_from_one.rb
|
60
56
|
- lib/mongoid/alize/errors/alize_error.rb
|
61
57
|
- lib/mongoid/alize/errors/already_defined_field.rb
|
58
|
+
- lib/mongoid/alize/errors/invalid_configuration.rb
|
62
59
|
- lib/mongoid/alize/errors/invalid_field.rb
|
63
60
|
- lib/mongoid/alize/from_callback.rb
|
61
|
+
- lib/mongoid/alize/instance_helpers.rb
|
64
62
|
- lib/mongoid/alize/macros.rb
|
65
63
|
- lib/mongoid/alize/to_callback.rb
|
66
|
-
- lib/mongoid/alize/to_many_callback.rb
|
67
|
-
- lib/mongoid/alize/to_one_callback.rb
|
68
64
|
- lib/mongoid_alize.rb
|
69
65
|
- spec/app/models/head.rb
|
66
|
+
- spec/app/models/mock_object.rb
|
70
67
|
- spec/app/models/person.rb
|
71
68
|
- spec/helpers/macros_helper.rb
|
72
69
|
- spec/mongoid/alize/callback_spec.rb
|
@@ -77,6 +74,7 @@ files:
|
|
77
74
|
- spec/mongoid/alize/callbacks/to/one_from_many_spec.rb
|
78
75
|
- spec/mongoid/alize/callbacks/to/one_from_one_spec.rb
|
79
76
|
- spec/mongoid/alize/from_callback_spec.rb
|
77
|
+
- spec/mongoid/alize/instance_helpers_spec.rb
|
80
78
|
- spec/mongoid/alize/macros_spec.rb
|
81
79
|
- spec/mongoid/alize/to_callback_spec.rb
|
82
80
|
- spec/mongoid_alize_spec.rb
|
@@ -1,50 +0,0 @@
|
|
1
|
-
module Mongoid
|
2
|
-
module Alize
|
3
|
-
class ToManyCallback < ToCallback
|
4
|
-
protected
|
5
|
-
|
6
|
-
def define_callback
|
7
|
-
klass.class_eval <<-CALLBACK, __FILE__, __LINE__ + 1
|
8
|
-
def #{callback_name}#{force_param}
|
9
|
-
data = #{joined_field_values("self")}
|
10
|
-
(#{iterable_relation}).each do |inverse|
|
11
|
-
#{pull_from_inverse}
|
12
|
-
inverse.push(:#{prefixed_name}, data)
|
13
|
-
end
|
14
|
-
end
|
15
|
-
protected :#{callback_name}
|
16
|
-
CALLBACK
|
17
|
-
end
|
18
|
-
|
19
|
-
def define_destroy_callback
|
20
|
-
klass.class_eval <<-CALLBACK, __FILE__, __LINE__ + 1
|
21
|
-
def #{destroy_callback_name}
|
22
|
-
(#{iterable_relation}).each do |inverse|
|
23
|
-
#{pull_from_inverse}
|
24
|
-
end
|
25
|
-
end
|
26
|
-
protected :#{destroy_callback_name}
|
27
|
-
CALLBACK
|
28
|
-
end
|
29
|
-
|
30
|
-
def pull_from_inverse
|
31
|
-
<<-CALLBACK
|
32
|
-
# this pull works in the DB, but not in memory
|
33
|
-
# ($pull w/ expression not currently supported by Mongoid)
|
34
|
-
inverse.pull(:#{prefixed_name}, { "_id" => self.id })
|
35
|
-
|
36
|
-
# manually do the pull in memory for now
|
37
|
-
if inverse.#{prefixed_name}
|
38
|
-
inverse.#{prefixed_name}.reject! do |hash|
|
39
|
-
hash["_id"] == self.id
|
40
|
-
end
|
41
|
-
end
|
42
|
-
CALLBACK
|
43
|
-
end
|
44
|
-
|
45
|
-
def prefixed_name
|
46
|
-
"#{inverse_relation}_fields"
|
47
|
-
end
|
48
|
-
end
|
49
|
-
end
|
50
|
-
end
|
@@ -1,43 +0,0 @@
|
|
1
|
-
module Mongoid
|
2
|
-
module Alize
|
3
|
-
class ToOneCallback < ToCallback
|
4
|
-
protected
|
5
|
-
|
6
|
-
def define_callback
|
7
|
-
_callback(callback_name, to_one_field_sets)
|
8
|
-
end
|
9
|
-
|
10
|
-
def define_destroy_callback
|
11
|
-
_callback(destroy_callback_name, to_one_destroy_field_sets)
|
12
|
-
end
|
13
|
-
|
14
|
-
def to_one_field_sets
|
15
|
-
fields.map { |field|
|
16
|
-
"relation.set(:#{prefixed_field_name(field)}, self.send(:#{field}))"
|
17
|
-
}.join("\n")
|
18
|
-
end
|
19
|
-
|
20
|
-
def to_one_destroy_field_sets
|
21
|
-
fields.map { |field|
|
22
|
-
"relation.set(:#{prefixed_field_name(field)}, nil)"
|
23
|
-
}.join("\n")
|
24
|
-
end
|
25
|
-
|
26
|
-
def _callback(_callback_name, field_sets)
|
27
|
-
klass.class_eval <<-CALLBACK, __FILE__, __LINE__ + 1
|
28
|
-
def #{_callback_name}#{force_param}
|
29
|
-
(#{iterable_relation}).each do |relation|
|
30
|
-
#{field_sets}
|
31
|
-
end
|
32
|
-
true
|
33
|
-
end
|
34
|
-
protected :#{_callback_name}
|
35
|
-
CALLBACK
|
36
|
-
end
|
37
|
-
|
38
|
-
def prefixed_field_name(name)
|
39
|
-
"#{inverse_relation}_#{name}"
|
40
|
-
end
|
41
|
-
end
|
42
|
-
end
|
43
|
-
end
|