neo4j 2.0.0.alpha.5-java → 2.0.0.alpha.6-java
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/CHANGELOG +12 -0
- data/Gemfile +0 -4
- data/README.rdoc +106 -62
- data/lib/neo4j.rb +7 -33
- data/lib/neo4j/performance.rb +43 -0
- data/lib/neo4j/rails/accept_id.rb +19 -18
- data/lib/neo4j/rails/attributes.rb +366 -120
- data/lib/neo4j/rails/finders.rb +41 -15
- data/lib/neo4j/rails/has_n.rb +203 -0
- data/lib/neo4j/rails/identity.rb +25 -0
- data/lib/neo4j/rails/model.rb +65 -242
- data/lib/neo4j/rails/nested_attributes.rb +108 -0
- data/lib/neo4j/rails/node_persistance.rb +56 -0
- data/lib/neo4j/rails/observer.rb +0 -2
- data/lib/neo4j/rails/persistence.rb +32 -154
- data/lib/neo4j/rails/rack_middleware.rb +26 -2
- data/lib/neo4j/rails/rails.rb +9 -6
- data/lib/neo4j/rails/railtie.rb +1 -2
- data/lib/neo4j/rails/relationship.rb +18 -125
- data/lib/neo4j/rails/relationship_persistence.rb +107 -0
- data/lib/neo4j/rails/relationships/node_dsl.rb +72 -44
- data/lib/neo4j/rails/relationships/relationships.rb +187 -59
- data/lib/neo4j/rails/relationships/rels_dsl.rb +18 -17
- data/lib/neo4j/rails/relationships/storage.rb +19 -17
- data/lib/neo4j/rails/timestamps.rb +53 -51
- data/lib/neo4j/rails/transaction.rb +9 -1
- data/lib/neo4j/rails/validations/uniqueness.rb +1 -1
- data/lib/neo4j/rails/versioning/versioning.rb +2 -2
- data/lib/neo4j/version.rb +1 -1
- data/lib/orm_adapter/adapters/neo4j.rb +47 -46
- data/neo4j.gemspec +1 -1
- metadata +10 -69
- data/lib/neo4j/algo/algo.rb +0 -294
- data/lib/neo4j/batch/batch.rb +0 -4
- data/lib/neo4j/batch/indexer.rb +0 -109
- data/lib/neo4j/batch/inserter.rb +0 -179
- data/lib/neo4j/batch/rule_inserter.rb +0 -24
- data/lib/neo4j/batch/rule_node.rb +0 -72
- data/lib/neo4j/config.rb +0 -177
- data/lib/neo4j/core_ext/class/inheritable_attributes.rb +0 -12
- data/lib/neo4j/core_ext/class/rewrite_inheritable_attributes.rb +0 -170
- data/lib/neo4j/database.rb +0 -158
- data/lib/neo4j/equal.rb +0 -21
- data/lib/neo4j/event_handler.rb +0 -263
- data/lib/neo4j/has_list/class_methods.rb +0 -11
- data/lib/neo4j/has_list/has_list.rb +0 -3
- data/lib/neo4j/has_list/mapping.rb +0 -133
- data/lib/neo4j/has_n/class_methods.rb +0 -119
- data/lib/neo4j/has_n/decl_relationship_dsl.rb +0 -246
- data/lib/neo4j/has_n/has_n.rb +0 -3
- data/lib/neo4j/has_n/mapping.rb +0 -98
- data/lib/neo4j/identity_map.rb +0 -140
- data/lib/neo4j/index/class_methods.rb +0 -108
- data/lib/neo4j/index/index.rb +0 -39
- data/lib/neo4j/index/indexer.rb +0 -341
- data/lib/neo4j/index/indexer_registry.rb +0 -68
- data/lib/neo4j/index/lucene_query.rb +0 -256
- data/lib/neo4j/load.rb +0 -25
- data/lib/neo4j/migrations/class_methods.rb +0 -110
- data/lib/neo4j/migrations/extensions.rb +0 -58
- data/lib/neo4j/migrations/lazy_node_mixin.rb +0 -41
- data/lib/neo4j/migrations/migration.rb +0 -112
- data/lib/neo4j/migrations/migrations.rb +0 -6
- data/lib/neo4j/migrations/node_mixin.rb +0 -80
- data/lib/neo4j/migrations/ref_node_wrapper.rb +0 -32
- data/lib/neo4j/model.rb +0 -4
- data/lib/neo4j/neo4j.rb +0 -216
- data/lib/neo4j/node.rb +0 -270
- data/lib/neo4j/node_mixin/class_methods.rb +0 -51
- data/lib/neo4j/node_mixin/node_mixin.rb +0 -141
- data/lib/neo4j/paginated.rb +0 -23
- data/lib/neo4j/property/class_methods.rb +0 -79
- data/lib/neo4j/property/property.rb +0 -111
- data/lib/neo4j/rails/mapping/property.rb +0 -183
- data/lib/neo4j/rails/rel_persistence.rb +0 -237
- data/lib/neo4j/relationship.rb +0 -239
- data/lib/neo4j/relationship_mixin/class_methods.rb +0 -36
- data/lib/neo4j/relationship_mixin/relationship_mixin.rb +0 -142
- data/lib/neo4j/relationship_set.rb +0 -58
- data/lib/neo4j/rels/rels.rb +0 -110
- data/lib/neo4j/rels/traverser.rb +0 -102
- data/lib/neo4j/rule/class_methods.rb +0 -201
- data/lib/neo4j/rule/event_listener.rb +0 -66
- data/lib/neo4j/rule/functions/count.rb +0 -43
- data/lib/neo4j/rule/functions/function.rb +0 -74
- data/lib/neo4j/rule/functions/functions.rb +0 -3
- data/lib/neo4j/rule/functions/sum.rb +0 -29
- data/lib/neo4j/rule/rule.rb +0 -150
- data/lib/neo4j/rule/rule_node.rb +0 -217
- data/lib/neo4j/to_java.rb +0 -31
- data/lib/neo4j/transaction.rb +0 -73
- data/lib/neo4j/traversal/filter_predicate.rb +0 -25
- data/lib/neo4j/traversal/prune_evaluator.rb +0 -14
- data/lib/neo4j/traversal/rel_expander.rb +0 -31
- data/lib/neo4j/traversal/traversal.rb +0 -141
- data/lib/neo4j/traversal/traverser.rb +0 -284
- data/lib/neo4j/type_converters/type_converters.rb +0 -288
@@ -0,0 +1,108 @@
|
|
1
|
+
module Neo4j
|
2
|
+
module Rails
|
3
|
+
module NestedAttributes
|
4
|
+
extend ActiveSupport::Concern
|
5
|
+
extend TxMethods
|
6
|
+
|
7
|
+
def update_nested_attributes(rel_type, attr, options)
|
8
|
+
allow_destroy, reject_if = [options[:allow_destroy], options[:reject_if]] if options
|
9
|
+
begin
|
10
|
+
# Check if we want to destroy not found nodes (e.g. {..., :_destroy => '1' } ?
|
11
|
+
destroy = attr.delete(:_destroy)
|
12
|
+
found = _find_node(rel_type, attr[:id]) || Neo4j::Rails::Model.find(attr[:id])
|
13
|
+
if allow_destroy && destroy && destroy != '0'
|
14
|
+
found.destroy if found
|
15
|
+
else
|
16
|
+
if not found
|
17
|
+
_create_entity(rel_type, attr) #Create new node from scratch
|
18
|
+
else
|
19
|
+
#Create relationship to existing node in case it doesn't exist already
|
20
|
+
_add_relationship(rel_type, found) if (not _has_relationship(rel_type, attr[:id]))
|
21
|
+
found.update_attributes(attr)
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end unless reject_if?(reject_if, attr)
|
25
|
+
end
|
26
|
+
tx_methods :update_nested_attributes
|
27
|
+
|
28
|
+
|
29
|
+
module ClassMethods
|
30
|
+
def accepts_nested_attributes_for(*attr_names)
|
31
|
+
options = attr_names.pop if attr_names[-1].is_a?(Hash)
|
32
|
+
|
33
|
+
attr_names.each do |association_name|
|
34
|
+
# Do some validation that we have defined the relationships we want to nest
|
35
|
+
rel = self._decl_rels[association_name.to_sym]
|
36
|
+
raise "No relationship declared with has_n or has_one with type #{association_name}" unless rel
|
37
|
+
raise "Can't use accepts_nested_attributes_for(#{association_name}) since it has not defined which class it has a relationship to, use has_n(#{association_name}).to(MyOtherClass)" unless rel.target_class
|
38
|
+
|
39
|
+
if rel.has_one?
|
40
|
+
send(:define_method, "#{association_name}_attributes=") do |attributes|
|
41
|
+
update_nested_attributes(association_name.to_sym, attributes, options)
|
42
|
+
end
|
43
|
+
else
|
44
|
+
send(:define_method, "#{association_name}_attributes=") do |attributes|
|
45
|
+
if attributes.is_a?(Array)
|
46
|
+
attributes.each do |attr|
|
47
|
+
update_nested_attributes(association_name.to_sym, attr, options)
|
48
|
+
end
|
49
|
+
else
|
50
|
+
attributes.each_value do |attr|
|
51
|
+
update_nested_attributes(association_name.to_sym, attr, options)
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
55
|
+
end
|
56
|
+
|
57
|
+
end
|
58
|
+
end
|
59
|
+
end
|
60
|
+
|
61
|
+
protected
|
62
|
+
|
63
|
+
def _create_entity(rel_type, attr)
|
64
|
+
clazz = self.class._decl_rels[rel_type.to_sym].target_class
|
65
|
+
_add_relationship(rel_type, clazz.new(attr))
|
66
|
+
end
|
67
|
+
|
68
|
+
def _add_relationship(rel_type, node)
|
69
|
+
if respond_to?("#{rel_type}_rel")
|
70
|
+
send("#{rel_type}=", node)
|
71
|
+
elsif respond_to?("#{rel_type}_rels")
|
72
|
+
has_n = send("#{rel_type}")
|
73
|
+
has_n << node
|
74
|
+
else
|
75
|
+
raise "oops #{rel_type}"
|
76
|
+
end
|
77
|
+
end
|
78
|
+
|
79
|
+
def _find_node(rel_type, id)
|
80
|
+
return nil if id.nil?
|
81
|
+
if respond_to?("#{rel_type}_rel")
|
82
|
+
send("#{rel_type}")
|
83
|
+
elsif respond_to?("#{rel_type}_rels")
|
84
|
+
has_n = send("#{rel_type}")
|
85
|
+
has_n.find { |n| n.id == id }
|
86
|
+
else
|
87
|
+
raise "oops #{rel_type}"
|
88
|
+
end
|
89
|
+
end
|
90
|
+
|
91
|
+
def _has_relationship(rel_type, id)
|
92
|
+
!_find_node(rel_type, id).nil?
|
93
|
+
end
|
94
|
+
|
95
|
+
def reject_if?(proc_or_symbol, attr)
|
96
|
+
return false if proc_or_symbol.nil?
|
97
|
+
if proc_or_symbol.is_a?(Symbol)
|
98
|
+
meth = method(proc_or_symbol)
|
99
|
+
meth.arity == 0 ? meth.call : meth.call(attr)
|
100
|
+
else
|
101
|
+
proc_or_symbol.call(attr)
|
102
|
+
end
|
103
|
+
end
|
104
|
+
|
105
|
+
|
106
|
+
end
|
107
|
+
end
|
108
|
+
end
|
@@ -0,0 +1,56 @@
|
|
1
|
+
module Neo4j
|
2
|
+
module Rails
|
3
|
+
module NodePersistence
|
4
|
+
extend TxMethods
|
5
|
+
|
6
|
+
def initialize(attributes = nil)
|
7
|
+
initialize_relationships
|
8
|
+
initialize_attributes(attributes)
|
9
|
+
end
|
10
|
+
|
11
|
+
|
12
|
+
def create
|
13
|
+
node = Neo4j::Node.new
|
14
|
+
init_on_load(node)
|
15
|
+
Neo4j::IdentityMap.add(node, self)
|
16
|
+
init_on_create
|
17
|
+
write_changed_relationships
|
18
|
+
clear_relationships
|
19
|
+
true
|
20
|
+
end
|
21
|
+
|
22
|
+
def update
|
23
|
+
super
|
24
|
+
write_changed_relationships
|
25
|
+
clear_relationships
|
26
|
+
true
|
27
|
+
end
|
28
|
+
|
29
|
+
# Reload the object from the DB
|
30
|
+
def reload(options = nil)
|
31
|
+
# Can't reload a none persisted node
|
32
|
+
return self if new_record?
|
33
|
+
clear_changes
|
34
|
+
clear_relationships
|
35
|
+
clear_composition_cache
|
36
|
+
reset_attributes
|
37
|
+
unless reload_from_database
|
38
|
+
set_deleted_properties
|
39
|
+
freeze
|
40
|
+
end
|
41
|
+
self
|
42
|
+
end
|
43
|
+
|
44
|
+
|
45
|
+
def reload_from_database
|
46
|
+
Neo4j::IdentityMap.remove_node_by_id(neo_id)
|
47
|
+
if reloaded = self.class.load_entity(neo_id)
|
48
|
+
send(:attributes=, reloaded.attributes, false)
|
49
|
+
end
|
50
|
+
reloaded
|
51
|
+
end
|
52
|
+
|
53
|
+
|
54
|
+
end
|
55
|
+
end
|
56
|
+
end
|
data/lib/neo4j/rails/observer.rb
CHANGED
@@ -2,11 +2,8 @@ module Neo4j
|
|
2
2
|
module Rails
|
3
3
|
module Persistence
|
4
4
|
extend ActiveSupport::Concern
|
5
|
+
extend TxMethods
|
5
6
|
|
6
|
-
included do
|
7
|
-
extend TxMethods
|
8
|
-
tx_methods :destroy, :create, :update, :update_nested_attributes, :delete, :update_attributes, :update_attributes!
|
9
|
-
end
|
10
7
|
|
11
8
|
# Persist the object to the database. Validations and Callbacks are included
|
12
9
|
# by default but validation can be disabled by passing :validate => false
|
@@ -14,6 +11,7 @@ module Neo4j
|
|
14
11
|
def save(*)
|
15
12
|
create_or_update
|
16
13
|
end
|
14
|
+
tx_methods :save
|
17
15
|
|
18
16
|
# Persist the object to the database. Validations and Callbacks are included
|
19
17
|
# by default but validation can be disabled by passing :validate => false
|
@@ -26,18 +24,14 @@ module Neo4j
|
|
26
24
|
end
|
27
25
|
end
|
28
26
|
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
# * Callbacks are invoked.
|
34
|
-
# * Updates all the attributes that are dirty in this object.
|
35
|
-
#
|
36
|
-
def update_attribute(name, value)
|
37
|
-
respond_to?("#{name}=") ? send("#{name}=", value) : self[name] = value
|
38
|
-
save(:validate => false)
|
27
|
+
def update
|
28
|
+
write_changed_attributes
|
29
|
+
clear_changes
|
30
|
+
true
|
39
31
|
end
|
40
32
|
|
33
|
+
|
34
|
+
|
41
35
|
# Removes the node from Neo4j and freezes the object.
|
42
36
|
def destroy
|
43
37
|
delete
|
@@ -47,39 +41,14 @@ module Neo4j
|
|
47
41
|
# Same as #destroy but doesn't run destroy callbacks and doesn't freeze
|
48
42
|
# the object
|
49
43
|
def delete
|
50
|
-
del unless new_record?
|
44
|
+
del unless new_record? || destroyed?
|
51
45
|
set_deleted_properties
|
52
46
|
end
|
47
|
+
tx_methods :delete
|
53
48
|
|
54
49
|
# Returns true if the object was destroyed.
|
55
|
-
def destroyed?
|
56
|
-
@_deleted ||
|
57
|
-
end
|
58
|
-
|
59
|
-
# Updates this resource with all the attributes from the passed-in Hash and requests that the record be saved.
|
60
|
-
# If saving fails because the resource is invalid then false will be returned.
|
61
|
-
def update_attributes(attributes)
|
62
|
-
self.attributes = attributes
|
63
|
-
save
|
64
|
-
end
|
65
|
-
|
66
|
-
# Same as #update_attributes, but raises an exception if saving fails.
|
67
|
-
def update_attributes!(attributes)
|
68
|
-
self.attributes = attributes
|
69
|
-
save!
|
70
|
-
end
|
71
|
-
|
72
|
-
# Reload the object from the DB.
|
73
|
-
def reload(options = nil)
|
74
|
-
clear_changes
|
75
|
-
clear_relationships
|
76
|
-
clear_composition_cache
|
77
|
-
reset_attributes
|
78
|
-
unless reload_from_database
|
79
|
-
set_deleted_properties
|
80
|
-
freeze
|
81
|
-
end
|
82
|
-
self
|
50
|
+
def destroyed?
|
51
|
+
@_deleted || (!new_record? && !self.class.load_entity(neo_id))
|
83
52
|
end
|
84
53
|
|
85
54
|
# Returns if the record is persisted, i.e. it’s not a new record and it was not destroyed
|
@@ -89,23 +58,38 @@ module Neo4j
|
|
89
58
|
|
90
59
|
# Returns true if the record hasn't been saved to Neo4j yet.
|
91
60
|
def new_record?
|
92
|
-
|
61
|
+
_java_entity.nil?
|
93
62
|
end
|
94
63
|
|
95
64
|
alias :new? :new_record?
|
96
65
|
|
97
66
|
# Freeze the properties hash.
|
98
67
|
def freeze
|
99
|
-
@
|
68
|
+
@_properties.freeze
|
69
|
+
self
|
100
70
|
end
|
101
71
|
|
102
72
|
# Returns +true+ if the properties hash has been frozen.
|
103
73
|
def frozen?
|
104
|
-
reload
|
105
|
-
@
|
74
|
+
reload unless new_record?
|
75
|
+
@_properties.frozen?
|
106
76
|
end
|
107
77
|
|
78
|
+
|
108
79
|
module ClassMethods
|
80
|
+
|
81
|
+
def transaction(&block)
|
82
|
+
Neo4j::Rails::Transaction.run do |tx|
|
83
|
+
block.call(tx)
|
84
|
+
end
|
85
|
+
end
|
86
|
+
|
87
|
+
def new(*args, &block)
|
88
|
+
instance = orig_new(*args, &block)
|
89
|
+
instance.instance_eval(&block) if block
|
90
|
+
instance
|
91
|
+
end
|
92
|
+
|
109
93
|
# Initialize a model and set a bunch of attributes at the same time. Returns
|
110
94
|
# the object whether saved successfully or not.
|
111
95
|
def create(*args)
|
@@ -143,114 +127,8 @@ module Neo4j
|
|
143
127
|
end
|
144
128
|
end
|
145
129
|
|
146
|
-
def update
|
147
|
-
write_changed_attributes
|
148
|
-
write_changed_relationships
|
149
|
-
clear_changes
|
150
|
-
clear_relationships
|
151
|
-
true
|
152
|
-
end
|
153
|
-
|
154
|
-
def create
|
155
|
-
node = Neo4j::Node.new
|
156
|
-
@_java_node = node
|
157
|
-
Neo4j::IdentityMap.add(node, self)
|
158
|
-
init_on_create
|
159
|
-
clear_changes
|
160
|
-
clear_relationships
|
161
|
-
true
|
162
|
-
end
|
163
|
-
|
164
|
-
def init_on_create(*)
|
165
|
-
self._classname = self.class.to_s
|
166
|
-
write_default_attributes
|
167
|
-
write_changed_attributes
|
168
|
-
write_changed_relationships
|
169
|
-
end
|
170
|
-
|
171
|
-
def reset_attributes
|
172
|
-
@properties = {}
|
173
|
-
end
|
174
|
-
|
175
|
-
def reload_from_database
|
176
|
-
Neo4j::IdentityMap.remove_node_by_id(id)
|
177
|
-
if reloaded = self.class.load(id)
|
178
|
-
clear_relationships
|
179
|
-
send(:attributes=, reloaded.attributes, false)
|
180
|
-
end
|
181
|
-
reloaded
|
182
|
-
end
|
183
|
-
|
184
130
|
def set_deleted_properties
|
185
|
-
@_deleted
|
186
|
-
@_persisted = false
|
187
|
-
@_java_node = nil
|
188
|
-
end
|
189
|
-
|
190
|
-
# Ensure any defaults are stored in the DB
|
191
|
-
def write_default_attributes
|
192
|
-
attribute_defaults.each do |attribute, value|
|
193
|
-
write_attribute(attribute, Neo4j::TypeConverters.convert(value, attribute, self.class, false)) unless changed_attributes.has_key?(attribute) || _java_node.has_property?(attribute)
|
194
|
-
end
|
195
|
-
end
|
196
|
-
|
197
|
-
# Write attributes to the Neo4j DB only if they're altered
|
198
|
-
def write_changed_attributes
|
199
|
-
@properties.each do |attribute, value|
|
200
|
-
write_attribute(attribute, value) if changed_attributes.has_key?(attribute)
|
201
|
-
end
|
202
|
-
end
|
203
|
-
|
204
|
-
def _create_entity(rel_type, attr)
|
205
|
-
clazz = self.class._decl_rels[rel_type.to_sym].target_class
|
206
|
-
_add_relationship(rel_type, clazz.new(attr))
|
207
|
-
end
|
208
|
-
|
209
|
-
def _add_relationship(rel_type, node)
|
210
|
-
if respond_to?("#{rel_type}_rel")
|
211
|
-
send("#{rel_type}=", node)
|
212
|
-
elsif respond_to?("#{rel_type}_rels")
|
213
|
-
has_n = send("#{rel_type}")
|
214
|
-
has_n << node
|
215
|
-
else
|
216
|
-
raise "oops #{rel_type}"
|
217
|
-
end
|
218
|
-
end
|
219
|
-
|
220
|
-
def _find_node(rel_type, id)
|
221
|
-
return nil if id.nil?
|
222
|
-
if respond_to?("#{rel_type}_rel")
|
223
|
-
send("#{rel_type}")
|
224
|
-
elsif respond_to?("#{rel_type}_rels")
|
225
|
-
has_n = send("#{rel_type}")
|
226
|
-
has_n.find { |n| n.id == id }
|
227
|
-
else
|
228
|
-
raise "oops #{rel_type}"
|
229
|
-
end
|
230
|
-
end
|
231
|
-
|
232
|
-
def _has_relationship(rel_type, id)
|
233
|
-
!_find_node(rel_type,id).nil?
|
234
|
-
end
|
235
|
-
|
236
|
-
def update_nested_attributes(rel_type, attr, options)
|
237
|
-
allow_destroy, reject_if = [options[:allow_destroy], options[:reject_if]] if options
|
238
|
-
begin
|
239
|
-
# Check if we want to destroy not found nodes (e.g. {..., :_destroy => '1' } ?
|
240
|
-
destroy = attr.delete(:_destroy)
|
241
|
-
found = _find_node(rel_type, attr[:id]) || Model.find(attr[:id])
|
242
|
-
if allow_destroy && destroy && destroy != '0'
|
243
|
-
found.destroy if found
|
244
|
-
else
|
245
|
-
if not found
|
246
|
-
_create_entity(rel_type, attr) #Create new node from scratch
|
247
|
-
else
|
248
|
-
#Create relationship to existing node in case it doesn't exist already
|
249
|
-
_add_relationship(rel_type, found) if (not _has_relationship(rel_type,attr[:id]))
|
250
|
-
found.update_attributes(attr)
|
251
|
-
end
|
252
|
-
end
|
253
|
-
end unless reject_if?(reject_if, attr)
|
131
|
+
@_deleted = true
|
254
132
|
end
|
255
133
|
|
256
134
|
public
|
@@ -2,18 +2,42 @@ module Neo4j
|
|
2
2
|
module Rails
|
3
3
|
# close lucene connections
|
4
4
|
# reset the Neo4j.threadlocal_ref_node (Multitenancy)
|
5
|
-
|
5
|
+
# clear the identity map
|
6
|
+
class Middleware
|
7
|
+
class Body #:nodoc:
|
8
|
+
def initialize(target, original)
|
9
|
+
@target = target
|
10
|
+
@original = original
|
11
|
+
end
|
12
|
+
|
13
|
+
def each(&block)
|
14
|
+
@target.each(&block)
|
15
|
+
end
|
16
|
+
|
17
|
+
def close
|
18
|
+
@target.close if @target.respond_to?(:close)
|
19
|
+
ensure
|
20
|
+
IdentityMap.enabled = @original
|
21
|
+
IdentityMap.clear
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
6
25
|
def initialize(app)
|
7
26
|
@app = app
|
8
27
|
end
|
9
28
|
|
10
29
|
def call(env)
|
11
|
-
|
30
|
+
enabled = IdentityMap.enabled
|
31
|
+
IdentityMap.enabled = Neo4j::Config[:identity_map]
|
32
|
+
status, headers, body = @app.call(env)
|
33
|
+
[status, headers, Body.new(body, enabled)]
|
12
34
|
ensure
|
13
35
|
Neo4j::Rails::Model.close_lucene_connections
|
14
36
|
Neo4j.threadlocal_ref_node = Neo4j.default_ref_node
|
15
37
|
end
|
16
38
|
end
|
39
|
+
|
17
40
|
end
|
18
41
|
|
42
|
+
|
19
43
|
end
|