neo4j 3.0.0.alpha.6 → 3.0.0.alpha.7

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.
Files changed (66) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG +9 -0
  3. data/Gemfile +6 -2
  4. data/lib/mydb2/active_tx_log +1 -0
  5. data/lib/mydb2/index/lucene-store.db +0 -0
  6. data/lib/mydb2/index/lucene.log.1 +0 -0
  7. data/lib/mydb2/index/lucene.log.active +0 -0
  8. data/lib/mydb2/index/lucene.log.v0 +0 -0
  9. data/lib/mydb2/lock +0 -0
  10. data/lib/mydb2/messages.log +618 -0
  11. data/lib/mydb2/neostore +0 -0
  12. data/lib/mydb2/neostore.id +0 -0
  13. data/lib/mydb2/neostore.labeltokenstore.db +0 -0
  14. data/lib/mydb2/neostore.labeltokenstore.db.id +0 -0
  15. data/lib/mydb2/neostore.labeltokenstore.db.names +0 -0
  16. data/lib/mydb2/neostore.labeltokenstore.db.names.id +0 -0
  17. data/lib/mydb2/neostore.nodestore.db +0 -0
  18. data/lib/mydb2/neostore.nodestore.db.id +0 -0
  19. data/lib/mydb2/neostore.nodestore.db.labels +0 -0
  20. data/lib/mydb2/neostore.nodestore.db.labels.id +0 -0
  21. data/lib/mydb2/neostore.propertystore.db +0 -0
  22. data/lib/mydb2/neostore.propertystore.db.arrays +0 -0
  23. data/lib/mydb2/neostore.propertystore.db.arrays.id +0 -0
  24. data/lib/mydb2/neostore.propertystore.db.id +0 -0
  25. data/lib/mydb2/neostore.propertystore.db.index +0 -0
  26. data/lib/mydb2/neostore.propertystore.db.index.id +0 -0
  27. data/lib/mydb2/neostore.propertystore.db.index.keys +0 -0
  28. data/lib/mydb2/neostore.propertystore.db.index.keys.id +0 -0
  29. data/lib/mydb2/neostore.propertystore.db.strings +0 -0
  30. data/lib/mydb2/neostore.propertystore.db.strings.id +0 -0
  31. data/lib/mydb2/neostore.relationshipstore.db +0 -0
  32. data/lib/mydb2/neostore.relationshipstore.db.id +0 -0
  33. data/lib/mydb2/neostore.relationshiptypestore.db +0 -0
  34. data/lib/mydb2/neostore.relationshiptypestore.db.id +0 -0
  35. data/lib/mydb2/neostore.relationshiptypestore.db.names +0 -0
  36. data/lib/mydb2/neostore.relationshiptypestore.db.names.id +0 -0
  37. data/lib/mydb2/neostore.schemastore.db +0 -0
  38. data/lib/mydb2/neostore.schemastore.db.id +0 -0
  39. data/lib/mydb2/nioneo_logical.log.1 +0 -0
  40. data/lib/mydb2/nioneo_logical.log.active +0 -0
  41. data/lib/mydb2/nioneo_logical.log.v0 +0 -0
  42. data/lib/mydb2/schema/label/lucene/segments.gen +0 -0
  43. data/lib/mydb2/schema/label/lucene/segments_1 +0 -0
  44. data/lib/mydb2/schema/label/lucene/write.lock +0 -0
  45. data/lib/mydb2/store_lock +0 -0
  46. data/lib/mydb2/tm_tx_log.1 +0 -0
  47. data/lib/neo4j.rb +4 -6
  48. data/lib/neo4j.rb~ +40 -0
  49. data/lib/neo4j/active_node.rb +10 -2
  50. data/lib/neo4j/active_node/has_n.rb +25 -3
  51. data/lib/neo4j/active_node/has_n/decl_rel.rb +6 -2
  52. data/lib/neo4j/active_node/has_n/nodes.rb +11 -2
  53. data/lib/neo4j/active_node/identity.rb +3 -2
  54. data/lib/neo4j/active_node/initialize.rb +1 -1
  55. data/lib/neo4j/active_node/labels.rb +69 -7
  56. data/lib/neo4j/active_node/orm_adapter.rb +88 -0
  57. data/lib/neo4j/active_node/persistence.rb +47 -5
  58. data/lib/neo4j/active_node/property.rb +48 -2
  59. data/lib/neo4j/active_node/rels.rb +2 -2
  60. data/lib/neo4j/active_node/validations.rb +3 -4
  61. data/lib/neo4j/version.rb +1 -1
  62. data/lib/neo4j/wrapper.rb +24 -2
  63. data/lib/rails/generators/neo4j/model/model_generator.rb +4 -4
  64. data/lib/rails/generators/neo4j/model/templates/model.erb +1 -1
  65. data/neo4j.gemspec +3 -3
  66. metadata +51 -6
@@ -0,0 +1,88 @@
1
+ require 'orm_adapter'
2
+
3
+ module Neo4j
4
+ module ActiveNode
5
+ module ClassMethods
6
+ include OrmAdapter::ToAdapter
7
+ end
8
+
9
+ class OrmAdapter < ::OrmAdapter::Base
10
+ module ClassMethods
11
+ include ActiveModel::Callbacks
12
+ end
13
+
14
+ def column_names
15
+ klass._decl_props.keys
16
+ end
17
+
18
+ def i18n_scope
19
+ :neo4j
20
+ end
21
+
22
+ # Get an instance by id of the model
23
+ def get!(id)
24
+ klass.find(wrap_key(id)).tap do |node|
25
+ raise "No record found" if node.nil?
26
+ end
27
+ end
28
+
29
+ # Get an instance by id of the model
30
+ def get(id)
31
+ klass.find(wrap_key(id))
32
+ end
33
+
34
+ # Find the first instance matching conditions
35
+ def find_first(options = {})
36
+ conditions, order = extract_conditions!(options)
37
+ extract_id!(conditions)
38
+ order = hasherize_order(order)
39
+
40
+ if !order.empty?
41
+ klass.find(conditions: conditions, order: order)
42
+ else
43
+ result = klass.find(conditions: conditions)
44
+ result
45
+ end
46
+ end
47
+
48
+ # Find all models matching conditions
49
+ def find_all(options = {})
50
+ conditions, order, limit, offset = extract_conditions!(options)
51
+ extract_id!(conditions)
52
+ order = hasherize_order(order)
53
+
54
+ result = if !order.empty?
55
+ klass.all(conditions: conditions, order: order, limit: limit, skip: offset)
56
+ else
57
+ klass.all(conditions: conditions)
58
+ end
59
+
60
+ result.to_a
61
+ end
62
+
63
+ # Create a model using attributes
64
+ def create!(attributes = {})
65
+ klass.create!(attributes)
66
+ end
67
+
68
+ # @see OrmAdapter::Base#destroy
69
+ def destroy(object)
70
+ object.destroy && true if valid_object?(object)
71
+ end
72
+
73
+ private
74
+
75
+ def hasherize_order(order)
76
+ (order || []).map {|clause| Hash[*clause] }
77
+ end
78
+
79
+ def extract_id!(conditions)
80
+ if id = conditions.delete(:id)
81
+ conditions['id(n)'] = id.to_i
82
+ end
83
+ end
84
+
85
+ end
86
+ end
87
+ end
88
+
@@ -25,7 +25,7 @@ module Neo4j::ActiveNode
25
25
  end
26
26
 
27
27
  def update_magic_properties
28
- self.updated_at = DateTime.now if respond_to?(:updated_at=)
28
+ self.updated_at = DateTime.now if respond_to?(:updated_at=) && changed?
29
29
  end
30
30
 
31
31
  # Creates a model with values matching those of the instance attributes and returns its id.
@@ -57,6 +57,29 @@ module Neo4j::ActiveNode
57
57
  end
58
58
  end
59
59
 
60
+ # Convenience method to set attribute and #save at the same time
61
+ # @param [Symbol, String] attribute of the attribute to update
62
+ # @param [Object] value to set
63
+ def update_attribute(attribute, value)
64
+ send("#{attribute}=", value)
65
+ self.save
66
+ end
67
+
68
+ # Convenience method to set attribute and #save! at the same time
69
+ # @param [Symbol, String] attribute of the attribute to update
70
+ # @param [Object] value to set
71
+ def update_attribute!(attribute, value)
72
+ send("#{attribute}=", value)
73
+ self.save!
74
+ end
75
+
76
+ # Convenience method to set multiple attributes and #save at the same time
77
+ # @param [Hash] attributes of names and values of attributes to set
78
+ def update_attributes(attributes)
79
+ assign_attributes(attributes)
80
+ self.save
81
+ end
82
+
60
83
  def create_or_update
61
84
  # since the same model can be created or updated twice from a relationship we have to have this guard
62
85
  @_create_or_updating = true
@@ -101,11 +124,11 @@ module Neo4j::ActiveNode
101
124
  end
102
125
 
103
126
  def update_model
104
- if @changed_attributes && !@changed_attributes.empty?
105
- changed_props = attributes.select{|k,v| @changed_attributes.include?(k)}
127
+ if changed_attributes && !changed_attributes.empty?
128
+ changed_props = attributes.select{|k,v| changed_attributes.include?(k)}
106
129
  changed_props = convert_properties_to :db, changed_props
107
130
  _persisted_node.update_props(changed_props)
108
- @changed_attributes.clear
131
+ changed_attributes.clear
109
132
  end
110
133
  end
111
134
 
@@ -144,7 +167,7 @@ module Neo4j::ActiveNode
144
167
 
145
168
  def reload
146
169
  return self if new_record?
147
- @changed_attributes && @changed_attributes.clear
170
+ changed_attributes && changed_attributes.clear
148
171
  unless reload_from_database
149
172
  @_deleted = true
150
173
  freeze
@@ -179,16 +202,27 @@ module Neo4j::ActiveNode
179
202
  # Creates a saves a new node
180
203
  # @param [Hash] props the properties the new node should have
181
204
  def create(props = {})
205
+ relationship_props = extract_relationship_attributes!(props)
206
+
182
207
  new(props).tap do |obj|
183
208
  obj.save
209
+ relationship_props.each do |prop, value|
210
+ obj.send("#{prop}=", value)
211
+ end
184
212
  end
185
213
  end
186
214
 
187
215
  # Same as #create, but raises an error if there is a problem during save.
188
216
  def create!(*args)
217
+ props = args[0] || {}
218
+ relationship_props = extract_relationship_attributes!(props)
219
+
189
220
  new(*args).tap do |o|
190
221
  yield o if block_given?
191
222
  o.save!
223
+ relationship_props.each do |prop, value|
224
+ o.send("#{prop}=", value)
225
+ end
192
226
  end
193
227
  end
194
228
 
@@ -198,6 +232,14 @@ module Neo4j::ActiveNode
198
232
 
199
233
  end
200
234
 
235
+ private
236
+
237
+ def assign_attributes(attributes)
238
+ attributes.each do |attribute, value|
239
+ send("#{attribute}=", value)
240
+ end
241
+ end
242
+
201
243
  end
202
244
 
203
245
  end
@@ -6,19 +6,55 @@ module Neo4j::ActiveNode
6
6
  include ActiveAttr::MassAssignment
7
7
  include ActiveAttr::TypecastedAttributes
8
8
  include ActiveAttr::AttributeDefaults
9
+ include ActiveAttr::QueryAttributes
9
10
  include ActiveModel::Dirty
10
11
 
12
+ class UndefinedPropertyError < RuntimeError
13
+ end
11
14
 
12
15
  def initialize(attributes={}, options={})
16
+ relationship_props = self.class.extract_relationship_attributes!(attributes)
17
+ writer_method_props = extract_writer_methods!(attributes)
18
+
19
+ validate_attributes!(attributes)
20
+
21
+ writer_method_props.each do |key, value|
22
+ self.send("#{key}=", value)
23
+ end
24
+
13
25
  super(attributes, options)
14
- (@changed_attributes || {}).clear
15
26
  end
16
27
 
17
28
  def save_properties
18
29
  @previously_changed = changes
19
- @changed_attributes.clear
30
+ changed_attributes.clear
31
+ end
32
+
33
+
34
+ # Returning nil when we get ActiveAttr::UnknownAttributeError from ActiveAttr
35
+ def read_attribute(name)
36
+ super(name)
37
+ rescue ActiveAttr::UnknownAttributeError
38
+ nil
39
+ end
40
+ alias_method :[], :read_attribute
41
+
42
+ private
43
+
44
+ # Changes attributes hash to remove relationship keys
45
+ # Raises an error if there are any keys left which haven't been defined as properties on the model
46
+ def validate_attributes!(attributes)
47
+ invalid_properties = attributes.keys.map(&:to_s) - self.attributes.keys
48
+ raise UndefinedPropertyError, "Undefined properties: #{invalid_properties.join(',')}" if invalid_properties.size > 0
20
49
  end
21
50
 
51
+ def extract_writer_methods!(attributes)
52
+ attributes.keys.inject({}) do |writer_method_props, key|
53
+ writer_method_props[key] = attributes.delete(key) if self.respond_to?("#{key}=")
54
+
55
+ writer_method_props
56
+ end
57
+ end
22
58
 
23
59
  module ClassMethods
24
60
 
@@ -37,6 +73,16 @@ module Neo4j::ActiveNode
37
73
  end
38
74
  end
39
75
 
76
+ # Extracts keys from attributes hash which are relationships of the model
77
+ # TODO: Validate separately that relationships are getting the right values? Perhaps also store the values and persist relationships on save?
78
+ def extract_relationship_attributes!(attributes)
79
+ attributes.keys.inject({}) do |relationship_props, key|
80
+ relationship_props[key] = attributes.delete(key) if self.has_relationship?(key)
81
+
82
+ relationship_props
83
+ end
84
+ end
85
+
40
86
  end
41
87
  end
42
88
 
@@ -4,8 +4,8 @@ module Neo4j::ActiveNode
4
4
  def_delegators :_rels_delegator, :rel?, :rel, :rels, :node, :nodes, :create_rel
5
5
 
6
6
  def _rels_delegator
7
- raise "Can't access relationship on a none persisted node" unless _persisted_node
7
+ raise "Can't access relationship on a non persisted node" unless _persisted_node
8
8
  _persisted_node
9
9
  end
10
10
  end
11
- end
11
+ end
@@ -41,7 +41,6 @@ module Neo4j
41
41
  class UniquenessValidator < ::ActiveModel::EachValidator
42
42
  def initialize(options)
43
43
  super(options.reverse_merge(:case_sensitive => true))
44
- @klass = options[:class]
45
44
  end
46
45
 
47
46
  def validate_each(record, attribute, value)
@@ -56,9 +55,9 @@ module Neo4j
56
55
  conditions[attribute] = /^#{Regexp.escape(value.to_s)}$/i
57
56
  end
58
57
 
59
- # prevent that same object is returned
58
+ # prevent that same object is returned
60
59
  # TODO: add negative condtion to not return current record
61
- found = @klass.all(conditions).to_a
60
+ found = record.class.all(conditions: conditions).to_a
62
61
  found.delete(record)
63
62
 
64
63
  if found.count > 0
@@ -75,7 +74,7 @@ module Neo4j
75
74
  conditions.merge(key => instance[key])
76
75
  end
77
76
  end
78
- end
77
+ end
79
78
 
80
79
  private
81
80
  def perform_validations(options={})
data/lib/neo4j/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Neo4j
2
- VERSION = "3.0.0.alpha.6"
2
+ VERSION = "3.0.0.alpha.7"
3
3
  end
data/lib/neo4j/wrapper.rb CHANGED
@@ -8,15 +8,37 @@ class Neo4j::Node
8
8
  if wrappers.empty?
9
9
  self
10
10
  else
11
- found = wrappers.sort.first
12
- wrapped_node = Neo4j::ActiveNode::Labels._wrapped_labels[found].new
11
+ wrapper_classes = wrappers.map{|w| Neo4j::ActiveNode::Labels._wrapped_labels[w]}
12
+ most_concrete_class = wrapper_classes.sort.first
13
+ wrapped_node = most_concrete_class.new
13
14
  wrapped_node.init_on_load(self, self.props)
14
15
  wrapped_node
15
16
  end
16
17
  end
17
18
 
19
+ def checked_labels_set
20
+ @@_checked_labels_set ||= Set.new
21
+ end
22
+
23
+ def check_label(label_name)
24
+ unless checked_labels_set.include?(label_name)
25
+ load_class_from_label(label_name)
26
+ # do this only once
27
+ checked_labels_set.add(label_name)
28
+ end
29
+ end
30
+
31
+ def load_class_from_label(label_name)
32
+ begin
33
+ label_name.to_s.split("::").inject(Kernel) {|container, name| container.const_get(name.to_s) }
34
+ rescue NameError
35
+ nil
36
+ end
37
+ end
38
+
18
39
  def _class_wrappers
19
40
  labels.find_all do |label_name|
41
+ check_label(label_name)
20
42
  Neo4j::ActiveNode::Labels._wrapped_labels[label_name].class == Class
21
43
  end
22
44
  end
@@ -70,11 +70,11 @@ class Neo4j::Generators::ModelGenerator < Neo4j::Generators::Base #:nodoc:
70
70
 
71
71
  def timestamp_statements
72
72
  %q{
73
- property :created_at, :type => DateTime
74
- # property :created_on, :type => Date
73
+ property :created_at, type: DateTime
74
+ # property :created_on, type: Date
75
75
 
76
- property :updated_at, :type => DateTime
77
- # property :updated_on, :type => Date
76
+ property :updated_at, type: DateTime
77
+ # property :updated_on, type: Date
78
78
  }
79
79
  end
80
80
 
@@ -1,7 +1,7 @@
1
1
  class <%= class_name %> <%= parent? ? "#{options[:parent].classify}" : "" %>
2
2
  include Neo4j::ActiveNode
3
3
  <% attributes.each do |attribute| -%>
4
- property :<%= attribute.name %><%= ", :type => #{attribute.type_class}" unless attribute.type_class == 'any' %>
4
+ property :<%= attribute.name %><%= ", type: #{attribute.type_class}" unless attribute.type_class == 'any' %>
5
5
  <%= index_fragment(attribute.name) %>
6
6
  <% end -%>
7
7
  <%= has_n_statements if has_n? -%>
data/neo4j.gemspec CHANGED
@@ -29,13 +29,13 @@ It comes included with the Apache Lucene document database.
29
29
  s.extra_rdoc_files = %w( README.md )
30
30
  s.rdoc_options = ["--quiet", "--title", "Neo4j.rb", "--line-numbers", "--main", "README.rdoc", "--inline-source"]
31
31
 
32
- s.add_dependency('orm_adapter', "~> 0.4.0")
32
+ s.add_dependency('orm_adapter', "~> 0.5.0")
33
33
  s.add_dependency("activemodel", "~> 4")
34
34
  s.add_dependency("railties", "~> 4")
35
35
  s.add_dependency('active_attr', "~> 0.8")
36
- s.add_dependency("neo4j-core", "= 3.0.0.alpha.12")
36
+ s.add_dependency("neo4j-core", "= 3.0.0.alpha.16")
37
37
 
38
38
  if RUBY_PLATFORM =~ /java/
39
- s.add_dependency("neo4j-community", '~> 2.0.0')
39
+ s.add_dependency("neo4j-community", '~> 2.0')
40
40
  end
41
41
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: neo4j
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.0.0.alpha.6
4
+ version: 3.0.0.alpha.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - Andreas Ronge
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-04-27 00:00:00.000000000 Z
11
+ date: 2014-06-07 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: orm_adapter
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: 0.4.0
19
+ version: 0.5.0
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: 0.4.0
26
+ version: 0.5.0
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: activemodel
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -72,14 +72,14 @@ dependencies:
72
72
  requirements:
73
73
  - - '='
74
74
  - !ruby/object:Gem::Version
75
- version: 3.0.0.alpha.12
75
+ version: 3.0.0.alpha.16
76
76
  type: :runtime
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
80
  - - '='
81
81
  - !ruby/object:Gem::Version
82
- version: 3.0.0.alpha.12
82
+ version: 3.0.0.alpha.16
83
83
  description: "You can think of Neo4j as a high-performance graph engine with all the
84
84
  features of a mature and robust database.\nThe programmer works with an object-oriented,
85
85
  flexible network structure rather than with strict and static tables \nyet enjoys
@@ -99,7 +99,51 @@ files:
99
99
  - bin/neo4j-jars
100
100
  - config/locales/en.yml
101
101
  - config/neo4j/config.yml
102
+ - lib/mydb2/active_tx_log
103
+ - lib/mydb2/index/lucene-store.db
104
+ - lib/mydb2/index/lucene.log.1
105
+ - lib/mydb2/index/lucene.log.active
106
+ - lib/mydb2/index/lucene.log.v0
107
+ - lib/mydb2/lock
108
+ - lib/mydb2/messages.log
109
+ - lib/mydb2/neostore
110
+ - lib/mydb2/neostore.id
111
+ - lib/mydb2/neostore.labeltokenstore.db
112
+ - lib/mydb2/neostore.labeltokenstore.db.id
113
+ - lib/mydb2/neostore.labeltokenstore.db.names
114
+ - lib/mydb2/neostore.labeltokenstore.db.names.id
115
+ - lib/mydb2/neostore.nodestore.db
116
+ - lib/mydb2/neostore.nodestore.db.id
117
+ - lib/mydb2/neostore.nodestore.db.labels
118
+ - lib/mydb2/neostore.nodestore.db.labels.id
119
+ - lib/mydb2/neostore.propertystore.db
120
+ - lib/mydb2/neostore.propertystore.db.arrays
121
+ - lib/mydb2/neostore.propertystore.db.arrays.id
122
+ - lib/mydb2/neostore.propertystore.db.id
123
+ - lib/mydb2/neostore.propertystore.db.index
124
+ - lib/mydb2/neostore.propertystore.db.index.id
125
+ - lib/mydb2/neostore.propertystore.db.index.keys
126
+ - lib/mydb2/neostore.propertystore.db.index.keys.id
127
+ - lib/mydb2/neostore.propertystore.db.strings
128
+ - lib/mydb2/neostore.propertystore.db.strings.id
129
+ - lib/mydb2/neostore.relationshipstore.db
130
+ - lib/mydb2/neostore.relationshipstore.db.id
131
+ - lib/mydb2/neostore.relationshiptypestore.db
132
+ - lib/mydb2/neostore.relationshiptypestore.db.id
133
+ - lib/mydb2/neostore.relationshiptypestore.db.names
134
+ - lib/mydb2/neostore.relationshiptypestore.db.names.id
135
+ - lib/mydb2/neostore.schemastore.db
136
+ - lib/mydb2/neostore.schemastore.db.id
137
+ - lib/mydb2/nioneo_logical.log.1
138
+ - lib/mydb2/nioneo_logical.log.active
139
+ - lib/mydb2/nioneo_logical.log.v0
140
+ - lib/mydb2/schema/label/lucene/segments.gen
141
+ - lib/mydb2/schema/label/lucene/segments_1
142
+ - lib/mydb2/schema/label/lucene/write.lock
143
+ - lib/mydb2/store_lock
144
+ - lib/mydb2/tm_tx_log.1
102
145
  - lib/neo4j.rb
146
+ - lib/neo4j.rb~
103
147
  - lib/neo4j/active_node.rb
104
148
  - lib/neo4j/active_node/callbacks.rb
105
149
  - lib/neo4j/active_node/has_n.rb
@@ -108,6 +152,7 @@ files:
108
152
  - lib/neo4j/active_node/identity.rb
109
153
  - lib/neo4j/active_node/initialize.rb
110
154
  - lib/neo4j/active_node/labels.rb
155
+ - lib/neo4j/active_node/orm_adapter.rb
111
156
  - lib/neo4j/active_node/persistence.rb
112
157
  - lib/neo4j/active_node/property.rb
113
158
  - lib/neo4j/active_node/rels.rb