neo4j 4.1.5 → 5.0.0.rc.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (51) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +584 -0
  3. data/CONTRIBUTORS +7 -28
  4. data/Gemfile +6 -1
  5. data/README.md +54 -8
  6. data/lib/neo4j.rb +5 -0
  7. data/lib/neo4j/active_node.rb +1 -0
  8. data/lib/neo4j/active_node/dependent/association_methods.rb +35 -17
  9. data/lib/neo4j/active_node/dependent/query_proxy_methods.rb +21 -19
  10. data/lib/neo4j/active_node/has_n.rb +377 -132
  11. data/lib/neo4j/active_node/has_n/association.rb +77 -38
  12. data/lib/neo4j/active_node/id_property.rb +46 -28
  13. data/lib/neo4j/active_node/initialize.rb +18 -6
  14. data/lib/neo4j/active_node/labels.rb +69 -35
  15. data/lib/neo4j/active_node/node_wrapper.rb +37 -30
  16. data/lib/neo4j/active_node/orm_adapter.rb +5 -4
  17. data/lib/neo4j/active_node/persistence.rb +53 -10
  18. data/lib/neo4j/active_node/property.rb +13 -5
  19. data/lib/neo4j/active_node/query.rb +11 -10
  20. data/lib/neo4j/active_node/query/query_proxy.rb +126 -153
  21. data/lib/neo4j/active_node/query/query_proxy_enumerable.rb +15 -25
  22. data/lib/neo4j/active_node/query/query_proxy_link.rb +89 -0
  23. data/lib/neo4j/active_node/query/query_proxy_methods.rb +72 -19
  24. data/lib/neo4j/active_node/query_methods.rb +3 -1
  25. data/lib/neo4j/active_node/scope.rb +17 -21
  26. data/lib/neo4j/active_node/validations.rb +8 -2
  27. data/lib/neo4j/active_rel/initialize.rb +1 -2
  28. data/lib/neo4j/active_rel/persistence.rb +21 -33
  29. data/lib/neo4j/active_rel/property.rb +4 -2
  30. data/lib/neo4j/active_rel/types.rb +20 -8
  31. data/lib/neo4j/config.rb +16 -6
  32. data/lib/neo4j/core/query.rb +2 -2
  33. data/lib/neo4j/errors.rb +10 -0
  34. data/lib/neo4j/migration.rb +57 -46
  35. data/lib/neo4j/paginated.rb +3 -1
  36. data/lib/neo4j/railtie.rb +26 -14
  37. data/lib/neo4j/shared.rb +7 -1
  38. data/lib/neo4j/shared/declared_property.rb +62 -0
  39. data/lib/neo4j/shared/declared_property_manager.rb +150 -0
  40. data/lib/neo4j/shared/persistence.rb +15 -8
  41. data/lib/neo4j/shared/property.rb +64 -49
  42. data/lib/neo4j/shared/rel_type_converters.rb +13 -12
  43. data/lib/neo4j/shared/serialized_properties.rb +0 -15
  44. data/lib/neo4j/shared/type_converters.rb +53 -47
  45. data/lib/neo4j/shared/typecaster.rb +49 -0
  46. data/lib/neo4j/version.rb +1 -1
  47. data/lib/rails/generators/neo4j/model/model_generator.rb +3 -3
  48. data/lib/rails/generators/neo4j_generator.rb +5 -12
  49. data/neo4j.gemspec +4 -3
  50. metadata +30 -11
  51. data/CHANGELOG +0 -545
@@ -8,12 +8,10 @@ module Neo4j::Shared
8
8
  end
9
9
 
10
10
  def to_db(value)
11
- return nil if value.nil?
12
11
  Time.utc(value.year, value.month, value.day).to_i
13
12
  end
14
13
 
15
14
  def to_ruby(value)
16
- return nil if value.nil?
17
15
  Time.at(value).utc.to_date
18
16
  end
19
17
  end
@@ -29,22 +27,21 @@ module Neo4j::Shared
29
27
  # Converts the given DateTime (UTC) value to an Integer.
30
28
  # DateTime values are automatically converted to UTC.
31
29
  def to_db(value)
32
- return nil if value.nil?
33
30
  value = value.new_offset(0) if value.respond_to?(:new_offset)
34
- if value.class == Date
35
- Time.utc(value.year, value.month, value.day, 0, 0, 0).to_i
36
- else
37
- Time.utc(value.year, value.month, value.day, value.hour, value.min, value.sec).to_i
38
- end
31
+
32
+ args = [value.year, value.month, value.day]
33
+ args += (value.class == Date ? [0, 0, 0] : [value.hour, value.min, value.sec])
34
+
35
+ Time.utc(*args).to_i
39
36
  end
40
37
 
38
+ DATETIME_FORMAT = '%Y-%m-%d %H:%M:%S %z'
41
39
  def to_ruby(value)
42
- return nil if value.nil?
43
40
  t = case value
44
41
  when Integer
45
42
  Time.at(value).utc
46
43
  when String
47
- DateTime.strptime(value, '%Y-%m-%d %H:%M:%S %z')
44
+ DateTime.strptime(value, DATETIME_FORMAT)
48
45
  else
49
46
  fail ArgumentError, "Invalid value type for DateType property: #{value.inspect}"
50
47
  end
@@ -63,7 +60,6 @@ module Neo4j::Shared
63
60
  # Converts the given DateTime (UTC) value to an Integer.
64
61
  # Only utc times are supported !
65
62
  def to_db(value)
66
- return nil if value.nil?
67
63
  if value.class == Date
68
64
  Time.utc(value.year, value.month, value.day, 0, 0, 0).to_i
69
65
  else
@@ -72,7 +68,6 @@ module Neo4j::Shared
72
68
  end
73
69
 
74
70
  def to_ruby(value)
75
- return nil if value.nil?
76
71
  Time.at(value).utc
77
72
  end
78
73
  end
@@ -86,12 +81,10 @@ module Neo4j::Shared
86
81
  end
87
82
 
88
83
  def to_db(value)
89
- return nil if value.nil?
90
84
  Psych.dump(value)
91
85
  end
92
86
 
93
87
  def to_ruby(value)
94
- return nil if value.nil?
95
88
  Psych.load(value)
96
89
  end
97
90
  end
@@ -105,60 +98,73 @@ module Neo4j::Shared
105
98
  end
106
99
 
107
100
  def to_db(value)
108
- return nil if value.nil?
109
101
  value.to_json
110
102
  end
111
103
 
112
104
  def to_ruby(value)
113
- return nil if value.nil?
114
105
  JSON.parse(value, quirks_mode: true)
115
106
  end
116
107
  end
117
108
  end
118
109
 
110
+ def convert_properties_to(obj, medium, properties)
111
+ converter = medium == :ruby ? :to_ruby : :to_db
112
+ properties.each_pair do |attr, value|
113
+ next if skip_conversion?(obj, attr, value)
114
+ properties[attr] = converted_property(primitive_type(attr.to_sym), value, converter)
115
+ end
116
+ end
119
117
 
118
+ private
120
119
 
121
- def convert_properties_to(medium, properties)
122
- # Perform type conversion
123
- serialize = self.respond_to?(:serialized_properties) ? self.serialized_properties : {}
124
-
125
- properties.each_with_object({}) do |key_value_pair, new_attributes|
126
- attr, value = key_value_pair
127
-
128
- # skip "secret" undeclared attributes such as uuid
129
- next new_attributes unless self.class.attributes[attr]
120
+ def converted_property(type, value, converter)
121
+ TypeConverters.converters[type].nil? ? value : TypeConverters.to_other(converter, value, type)
122
+ end
130
123
 
131
- type = serialize.key?(attr.to_sym) ? serialize[attr.to_sym] : self.class._attribute_type(attr)
132
- new_attributes[attr] = if TypeConverters.converters[type].nil?
133
- value
134
- else
135
- TypeConverters.send "to_#{medium}", value, type
136
- end
124
+ # If the attribute is to be typecast using a custom converter, which converter should it use? If no, returns the type to find a native serializer.
125
+ def primitive_type(attr)
126
+ case
127
+ when self.serialized_properties_keys.include?(attr)
128
+ serialized_properties[attr]
129
+ when self.magic_typecast_properties_keys.include?(attr)
130
+ self.magic_typecast_properties[attr]
131
+ else
132
+ self.fetch_upstream_primitive(attr)
137
133
  end
138
134
  end
139
135
 
136
+ # Returns true if the property isn't defined in the model or if it is nil
137
+ def skip_conversion?(obj, attr, value)
138
+ !obj.class.attributes[attr] || value.nil?
139
+ end
140
+
140
141
  class << self
141
- # Converts the value to ruby from a Neo4j database value if there is a converter for given type
142
- def to_ruby(value, type = nil)
143
- found_converter = converters[type]
144
- found_converter ? found_converter.to_ruby(value) : value
142
+ attr_reader :converters
143
+
144
+ def included(_)
145
+ return if @converters
146
+ @converters = {}
147
+ Neo4j::Shared::TypeConverters.constants.each do |constant_name|
148
+ constant = Neo4j::Shared::TypeConverters.const_get(constant_name)
149
+ register_converter(constant) if constant.respond_to?(:convert_type)
150
+ end
145
151
  end
146
152
 
147
- # Converts the value to a Neo4j database value from ruby if there is a converter for given type
148
- def to_db(value, type = nil)
153
+
154
+ def typecaster_for(primitive_type)
155
+ return nil if primitive_type.nil?
156
+ converters.key?(primitive_type) ? converters[primitive_type] : nil
157
+ end
158
+
159
+ # @param [Symbol] direction either :to_ruby or :to_other
160
+ def to_other(direction, value, type)
161
+ fail "Unknown direction given: #{direction}" unless direction == :to_ruby || direction == :to_db
149
162
  found_converter = converters[type]
150
- found_converter ? found_converter.to_db(value) : value
163
+ found_converter ? found_converter.send(direction, value) : value
151
164
  end
152
165
 
153
- def converters
154
- @converters ||= begin
155
- Neo4j::Shared::TypeConverters.constants.each_with_object({}) do |constant_name, result|
156
- constant = Neo4j::Shared::TypeConverters.const_get(constant_name)
157
- if constant.respond_to?(:convert_type)
158
- result[constant.convert_type] = constant
159
- end
160
- end
161
- end
166
+ def register_converter(converter)
167
+ converters[converter.convert_type] = converter
162
168
  end
163
169
  end
164
170
  end
@@ -0,0 +1,49 @@
1
+ module Neo4j
2
+ module Shared
3
+ # This module provides a convenient way of registering a custom Typecasting class. Custom Typecasters all follow a simple pattern.
4
+ # EXAMPLE:
5
+ # class RangeConverter
6
+ # class << self
7
+ # def primitive_type
8
+ # String
9
+ # end
10
+ #
11
+ # def convert_type
12
+ # Range
13
+ # end
14
+ #
15
+ # def to_db(value)
16
+ # value.to_s
17
+ # end
18
+ #
19
+ # def to_ruby(value)
20
+ # ends = value.to_s.split('..').map { |d| Integer(d) }
21
+ # ends[0]..ends[1]
22
+ # end
23
+ # alias_method :call, :to_ruby
24
+ # end
25
+ #
26
+ # include Neo4j::Shared::Typecaster
27
+ # end
28
+ #
29
+ # This would allow you to use `property :my_prop, type: Range` in a model.
30
+ # Each method and the `alias_method` call is required. Make sure the module inclusion happens at the end of the file.
31
+ #
32
+ # `primitive_type` is used to fool ActiveAttr's type converters, which only recognize a few basic Ruby classes.
33
+ #
34
+ # `convert_type` must match the constant given to the `type` option.
35
+ #
36
+ # `to_db` provides logic required to transform your value into the class defined by `primitive_type`
37
+ #
38
+ # `to_ruby` provides logic to transform the DB-provided value back into the class expected by code using the property.
39
+ # In other words, it should match the `convert_type`.
40
+ #
41
+ # Note that `alias_method` is used to make `to_ruby` respond to `call`. This is to provide compatibility with ActiveAttr.
42
+
43
+ module Typecaster
44
+ def self.included(other)
45
+ Neo4j::Shared::TypeConverters.register_converter(other)
46
+ end
47
+ end
48
+ end
49
+ end
@@ -1,3 +1,3 @@
1
1
  module Neo4j
2
- VERSION = '4.1.5'
2
+ VERSION = '5.0.0.rc.1'
3
3
  end
@@ -62,9 +62,9 @@ class Neo4j::Generators::ModelGenerator < Neo4j::Generators::Base #:nodoc:
62
62
 
63
63
 
64
64
  def index_fragment(property)
65
- if options[:indices] && options[:indices].include?(property)
66
- "index :#{property}"
67
- end
65
+ return if !options[:indices] || !options[:indices].include?(property)
66
+
67
+ "index :#{property}"
68
68
  end
69
69
 
70
70
  def parent?
@@ -53,18 +53,11 @@ module Rails
53
53
  class GeneratedAttribute #:nodoc:
54
54
  def type_class
55
55
  case type.to_s.downcase
56
- when 'any' then
57
- 'any'
58
- when 'datetime' then
59
- 'DateTime'
60
- when 'date' then
61
- 'Date'
62
- when 'text' then
63
- 'String'
64
- when 'integer', 'number', 'fixnum' then
65
- 'Integer'
66
- when 'float' then
67
- 'Float'
56
+ when 'any' then 'any'
57
+ when 'datetime' then 'DateTime'
58
+ when 'date' then 'Date'
59
+ when 'integer', 'number', 'fixnum' then 'Integer'
60
+ when 'float' then 'Float'
68
61
  else
69
62
  'String'
70
63
  end
@@ -7,7 +7,7 @@ require 'neo4j/version'
7
7
  Gem::Specification.new do |s|
8
8
  s.name = 'neo4j'
9
9
  s.version = Neo4j::VERSION
10
- s.required_ruby_version = '>= 1.9.1'
10
+ s.required_ruby_version = '>= 2.0.0'
11
11
 
12
12
  s.authors = 'Andreas Ronge, Brian Underwood, Chris Grigg'
13
13
  s.email = 'andreas.ronge@gmail.com, brian@brian-underwood.codes, chris@subvertallmedia.com'
@@ -20,7 +20,7 @@ A Neo4j OGM (Object-Graph-Mapper) for use in Ruby on Rails and Rack frameworks h
20
20
  EOF
21
21
 
22
22
  s.require_path = 'lib'
23
- s.files = Dir.glob('{bin,lib,config}/**/*') + %w(README.md CHANGELOG CONTRIBUTORS Gemfile neo4j.gemspec)
23
+ s.files = Dir.glob('{bin,lib,config}/**/*') + %w(README.md CHANGELOG.md CONTRIBUTORS Gemfile neo4j.gemspec)
24
24
  s.executables = ['neo4j-jars']
25
25
  s.has_rdoc = true
26
26
  s.extra_rdoc_files = %w( README.md )
@@ -30,7 +30,7 @@ A Neo4j OGM (Object-Graph-Mapper) for use in Ruby on Rails and Rack frameworks h
30
30
  s.add_dependency('activemodel', '~> 4')
31
31
  s.add_dependency('activesupport', '~> 4')
32
32
  s.add_dependency('active_attr', '~> 0.8')
33
- s.add_dependency('neo4j-core', '~> 4.0.0')
33
+ s.add_dependency('neo4j-core', '>= 5.0.0.rc.1')
34
34
  s.add_dependency('neo4j-community', '~> 2.0') if RUBY_PLATFORM =~ /java/
35
35
  s.add_development_dependency('railties', '~> 4')
36
36
  s.add_development_dependency('pry')
@@ -40,4 +40,5 @@ A Neo4j OGM (Object-Graph-Mapper) for use in Ruby on Rails and Rack frameworks h
40
40
  s.add_development_dependency('guard')
41
41
  s.add_development_dependency('guard-rubocop')
42
42
  s.add_development_dependency('guard-rspec')
43
+ s.add_development_dependency('rubocop', '~> 0.29.1')
43
44
  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: 4.1.5
4
+ version: 5.0.0.rc.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Andreas Ronge, Brian Underwood, Chris Grigg
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-03-16 00:00:00.000000000 Z
11
+ date: 2015-05-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: orm_adapter
@@ -70,16 +70,16 @@ dependencies:
70
70
  name: neo4j-core
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
- - - "~>"
73
+ - - ">="
74
74
  - !ruby/object:Gem::Version
75
- version: 4.0.0
75
+ version: 5.0.0.rc.1
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: 4.0.0
82
+ version: 5.0.0.rc.1
83
83
  - !ruby/object:Gem::Dependency
84
84
  name: railties
85
85
  requirement: !ruby/object:Gem::Requirement
@@ -192,6 +192,20 @@ dependencies:
192
192
  - - ">="
193
193
  - !ruby/object:Gem::Version
194
194
  version: '0'
195
+ - !ruby/object:Gem::Dependency
196
+ name: rubocop
197
+ requirement: !ruby/object:Gem::Requirement
198
+ requirements:
199
+ - - "~>"
200
+ - !ruby/object:Gem::Version
201
+ version: 0.29.1
202
+ type: :development
203
+ prerelease: false
204
+ version_requirements: !ruby/object:Gem::Requirement
205
+ requirements:
206
+ - - "~>"
207
+ - !ruby/object:Gem::Version
208
+ version: 0.29.1
195
209
  description: |
196
210
  A Neo4j OGM (Object-Graph-Mapper) for use in Ruby on Rails and Rack frameworks heavily inspired by ActiveRecord.
197
211
  email: andreas.ronge@gmail.com, brian@brian-underwood.codes, chris@subvertallmedia.com
@@ -201,7 +215,7 @@ extensions: []
201
215
  extra_rdoc_files:
202
216
  - README.md
203
217
  files:
204
- - CHANGELOG
218
+ - CHANGELOG.md
205
219
  - CONTRIBUTORS
206
220
  - Gemfile
207
221
  - README.md
@@ -228,6 +242,7 @@ files:
228
242
  - lib/neo4j/active_node/query/query_proxy.rb
229
243
  - lib/neo4j/active_node/query/query_proxy_enumerable.rb
230
244
  - lib/neo4j/active_node/query/query_proxy_find_in_batches.rb
245
+ - lib/neo4j/active_node/query/query_proxy_link.rb
231
246
  - lib/neo4j/active_node/query/query_proxy_methods.rb
232
247
  - lib/neo4j/active_node/query_methods.rb
233
248
  - lib/neo4j/active_node/reflection.rb
@@ -246,17 +261,21 @@ files:
246
261
  - lib/neo4j/active_rel/validations.rb
247
262
  - lib/neo4j/config.rb
248
263
  - lib/neo4j/core/query.rb
264
+ - lib/neo4j/errors.rb
249
265
  - lib/neo4j/migration.rb
250
266
  - lib/neo4j/paginated.rb
251
267
  - lib/neo4j/railtie.rb
252
268
  - lib/neo4j/shared.rb
253
269
  - lib/neo4j/shared/callbacks.rb
270
+ - lib/neo4j/shared/declared_property.rb
271
+ - lib/neo4j/shared/declared_property_manager.rb
254
272
  - lib/neo4j/shared/identity.rb
255
273
  - lib/neo4j/shared/persistence.rb
256
274
  - lib/neo4j/shared/property.rb
257
275
  - lib/neo4j/shared/rel_type_converters.rb
258
276
  - lib/neo4j/shared/serialized_properties.rb
259
277
  - lib/neo4j/shared/type_converters.rb
278
+ - lib/neo4j/shared/typecaster.rb
260
279
  - lib/neo4j/shared/validations.rb
261
280
  - lib/neo4j/tasks/migration.rake
262
281
  - lib/neo4j/type_converters.rb
@@ -285,15 +304,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
285
304
  requirements:
286
305
  - - ">="
287
306
  - !ruby/object:Gem::Version
288
- version: 1.9.1
307
+ version: 2.0.0
289
308
  required_rubygems_version: !ruby/object:Gem::Requirement
290
309
  requirements:
291
- - - ">="
310
+ - - ">"
292
311
  - !ruby/object:Gem::Version
293
- version: '0'
312
+ version: 1.3.1
294
313
  requirements: []
295
314
  rubyforge_project: neo4j
296
- rubygems_version: 2.4.3
315
+ rubygems_version: 2.4.6
297
316
  signing_key:
298
317
  specification_version: 4
299
318
  summary: A graph database for Ruby
data/CHANGELOG DELETED
@@ -1,545 +0,0 @@
1
- == 4.1.2
2
- * Fixes two bugs related to inheritance: one regarding ActiveRel classes and relationship types, the other regarding ActiveNode primary_key properties not being set when a model is loaded prior to Neo4j session.
3
-
4
- == 4.1.1
5
- * Switches use of Fixnum to Integer to improve 32-bit support
6
-
7
- == 4.1.0
8
- This release includes many performance fixes and new features. The most notable:
9
- * Huge stylist cleanup/refactoring by Brian on the entire gem by Brian armed with Rubocop. See http://neo4jrb.io/blog/2014/12/29/stay-out-of-trouble.html.
10
- * Every node create, update, and destroy is now wrapped in a transaction. See http://neo4jrb.io/blog/2015/01/06/transactions_everywhere.html.
11
- * New `dependent` options for associations: `:delete`, `:destroy`, `:delete_orphans`, `:destroy_orphans`. See http://neo4jrb.io/blog/2015/01/07/association_dependent_options.html.
12
- * New `unique: true` option for associations, `creates_unique_rel` class method for ActiveRel. Both of these will result in relationship creation Cypher using "CREATE UNIQUE" instead of "CREATE".
13
- * Fixed an n+1 query issue during node creation and update.
14
- * Dieter simplified some code related to frozen attributes. See https://github.com/neo4jrb/neo4j/pull/655.
15
- We now have a new website online at http://neo4jrb.io! Keep an eye on it for news and blogs related to this and other projects.
16
-
17
- == 4.0.0
18
- * Change neo4j-core dependency from 3.1.0 to 4.0.0.
19
-
20
- == 4.0.0.rc.4
21
- * _classname property is disabled by default for ActiveRel! It had been disabled for ActiveNode, this just evens the score.
22
- * Fixes a bug to create better `result` labels in Cypher.
23
- * Made the `delete_all` and `destroy_all` ActiveNode class methods consistent with their ActiveRecord counterparts. `destroy_all` previously performed its deletes in Cypher but it should have been returning nodes to Ruby and calling `destroy`. `delete_all` didn't exist at all.
24
-
25
- == 4.0.0.rc.3
26
- Released minutes after rc.2 to catch one late addition!
27
- * Adds serialization support for QueryProxy.
28
-
29
- == 4.0.0.rc.2
30
- This release builds on features introduced in the first RC. We are releasing this as another RC because the API may be tweaked before release.
31
- * New `proxy_as` for Core::Query to build QueryProxy chains onto Core::Query objects!
32
- * Using `proxy_as`, new `optional` method in QueryProxy to use the `OPTIONAL MATCH` Cypher function.
33
- * `match_to` and methods that depend on it now support arrays of nodes or IDs.
34
- * New `rels_to`/`all_rels_to` methods.
35
- * New `delete` and `destroy` methods in QueryProxy to easily remove relationships.
36
- * Serialized objects will include IDs by default.
37
-
38
- == 4.0.0.rc.1
39
- This release introduces API changes that may be considered breaking under certain conditions. See See https://github.com/neo4jrb/neo4j/wiki/Neo4j.rb-v4-Introduction.
40
- Please use https://github.com/neo4jrb/neo4j/issues for support regarding this update! You can also reach us on Twitter: @neo4jrb (Brian) and @subvertallmedia (Chris).
41
- * Default behavior changed: relationship types default to all caps, no prepending of "#". This behavior can be changed.
42
- * ActiveRel models no longer require explicit calling of `type`. When missing, the model will infer a type using the class name following the same rules used to determine automatic relationship types from ActiveNode models.
43
- * _classname properties will not be added automatically if you are using a version Neo4j >= 2.1.5. Instead, models are found using labels or relationship type. This is a potentially breaking change, particularly where ActiveRel is concerned. See the link at the beginning of this message for the steps required to work around this.
44
- * Query scopes are now chainable! Call `all` at the start of your scope or method to take advantage of this.
45
- * Changes required for Neo4j 2.2.
46
- * Support for custom typecasters.
47
- * New method `rel_where`, expanded behavior of `match_to` and `first_rel_to`
48
- * Implemented ActiveSupport load hooks.
49
- * Assorted performance improvements and refactoring.
50
-
51
- == 3.0.4
52
- * Gemspec requires the latest neo4j-core.
53
- * Fixed a pagination bug — thanks, @chrisgogreen!
54
- * New QueryProxy methods `match_to` and `first_rel_to` are pretty cool.
55
- * include_root_in_json is now configurable through config.neo4j.include_root_in_json or Neo4j::Config[:include_root_in_json]. Also cool.
56
- * There's a new `delete_all` method for QueryProxy, too.
57
- * @codebeige removed the `include?` class method, which was smart.
58
- * Did I mention we won an award from Neo Tech? Check it out. https://github.com/neo4jrb/neo4j#welcome-to-neo4jrb
59
-
60
- == 3.0.3
61
- * Gemspec has been updated to require neo4j-core 3.0.5
62
- * Added `find_in_batches`
63
- * Pagination has been updated to allow better ordering. Relaunch of neo4j-will_paginate as neo4j-will_paginate_redux is imminent!
64
- * Everything is better: `create`'s handling of blocks, better behavior from `count`, better ActiveRel from_class/to_class checks, better handling of rel_class strings, and more
65
- * Added a new find_or_create_by class method
66
-
67
- Big thanks to new contributors Miha Rekar and Michael Perez! Also check out or Github issues, where we're discussing changes for 3.1.0. https://github.com/neo4jrb/neo4j/issues
68
-
69
- == 3.0.2
70
- * "Model#all" now evaluates lazily, models no longer include Enumerable
71
- * Faster, more efficient uniqueness validations
72
- * Adjusted many common queries to use params, will improve performance
73
- * ActiveRel fixes: create uses Core Query instead of Core's `rels` method, `{ classname: #{_classname} }` no longer inserted into every query, find related node IDs without loading the nodes
74
- * Allow inheritance when checking model class on a relation (Andrew Jones)
75
- * Provided migrations will use Rake.original_dir instead of Rails.env to provide better compatibility with frameworks other than Rails
76
- * rel_class option in ActiveNode models will now accept string of a model name
77
- * Additional bug fixes
78
-
79
- == 3.0.1
80
- * Removed reference to neo4j-core from Gemfile and set neo4j.gemspec to use neo4j-core ~>3.0.0
81
-
82
- == 3.0.0
83
- No change from rc 4
84
-
85
- == 3.0.0.rc.4
86
- * UUIDs are now automatically specified on models as neo IDs won't be reliable
87
- in future versions of neo4j
88
- * Migrations now supported (including built-in migrations to migrate UUIDs and
89
- insert the _classname property which is used for performance)
90
- * Association reflection
91
- * Model.find supports ids/node objects as well as arrays of id/node objects
92
- * rake tasks now get automatically included into rails app
93
-
94
-
95
- == 3.0.0.rc.3
96
- * thread safety improvements
97
- * scope and general refactoring
98
- * Added ability to create relationships on init (persisted on save)
99
-
100
- == 3.0.0.rc.2
101
- * Use newer neo4j-core release
102
-
103
- == 3.0.0.rc.1
104
- * Support for count, size, length, empty, blank? for has_many relationship
105
- * Support for rails logger of cypher queries in development
106
- * Support for distinct count
107
- * Optimized methods: https://github.com/andreasronge/neo4j/wiki/Optimized-Methods
108
- * Queries should respect mapped label names (#421)
109
- * Warn if no session is available
110
- * Fix broken == and equality (#424)
111
-
112
- == 3.0.0.alpha.11
113
- * Bug fixes
114
-
115
- == 3.0.0.alpha.10
116
- * ActiveRel support, see Wiki pages (chris #393)
117
-
118
- == 3.0.0.alpha.9
119
- * Complete rewrite of the query api, see wiki page (#406, chris, brian)
120
- * Performance improvements (#382,#400, #402, chris)
121
- * idproperty - user defined primary keys (#396,#389)
122
- * Reimplementation of Neo4j::Config
123
- * Serialization of node properties (#381)
124
- * Better first,last syntax (#379)
125
-
126
- == 3.0.0.alpha.8
127
- * Integration with new Query API from neo4j-core including:
128
- * - .query_as and #query_as methods to get queries from models (#366)
129
- * - .qq method for QuickQuery syntax ( https://github.com/andreasronge/neo4j/wiki/Neo4j-v3#quickquery-work-in-progress / #366)
130
- * Before and after callbacks on associations (#373)
131
- * .find / .all / .count changed to be more like ActiveRecord
132
- * .first / .last methods (#378)
133
- * .find_by / .find_by! (#375)
134
-
135
- == 3.0.0.alpha.7
136
- * Bug fix uniqueness-validator (#356 from JohnKellyFerguson)
137
- * Many improvements, like update_attributes and validation while impl orm_adapter, Brian Underwood
138
- * Impl orm_adapter API for neo4j so it can be used from for example devise, Brian Underwood (#355)
139
- * Fix of inheritance of Neo4j::ActiveNode (#307)
140
- * Expose add_label, and remove_label (#335)
141
- * Fixed auto loading of classes bug, (#349)
142
- * Bumped neo4j-core, 3.0.0.alpha.16
143
-
144
- == 3.0.0.alpha.6
145
- * Support for Heroku URLs, see wiki https://github.com/andreasronge/neo4j/wiki/Neo4j-v3 (#334)
146
-
147
- == 3.0.0.alpha.5
148
- * Added allow session options via 'config.neo4j.session_options' so it can run on heroku (#333)
149
- * Relaxed Dependencies for Rails 4.1 (#332)
150
- * Using neo4j-core version 3.0.0.alpha.12
151
-
152
- == 3.0.0.alpha.4
153
- * Implemented validates_uniqueness_of (#311)
154
- * Using neo4j-core version 3.0.0.alpha.11
155
-
156
- == 3.0.0.alpha.3
157
- * Support for rails scaffolds
158
- * Support for created_at and updated_at (#305)
159
- * Support for ability to select a session to use per model (#299)
160
- * BugFix: updating a model should not clear out old properties (#296)
161
-
162
- == 3.0.0.alpha.2
163
- * Support for both embedded (only JRuby) and server API (runs on MRI Ruby !)
164
- * Simple Rails app now work
165
- * Support for has_n and has_one method
166
- * ActiveModel support, callback, validation
167
- * Declared properties (via active_attr gem)
168
-
169
- == 2.3.0 / 2013-07-18
170
- * Fix Issue with HA console when ruby-debug is loaded (#261, thekendalmiller)
171
- * Use 1.9 Neo4j
172
-
173
- == 2.2.4 / 2013-05-19
174
- * get_or_create should return wrapped ruby nodes, alex-klepa, #241, #246
175
- * Make sure freeze does not have side effects, #235
176
- * Fix for carrierwave-neo4j (attribute_defaults), #235
177
-
178
- == 2.2.3 / 2012-12-28
179
- * Support for HA cluster with neo4j 1.9.X, #228, #99, #223
180
- * Make sure the Identity map is cleared after an exception, #214
181
- * Relationship other_node should return wrapped node, #226
182
- * Automatically convert DateTimes to UTC, (neo4j-wrapper #7)
183
- * get_or_create should return a wrapped node (neo4j-wrapper #8)
184
- * Make it work with Neo4j 1.7.1 (neo4j-core, #19)
185
-
186
- == 2.2.2 - skipped
187
-
188
- == 2.2.1 / 2012-12-18
189
- * Fix for JRuby 1.7.1 and Equal #225
190
- * Fix for create nodes and relationship using Cypher (neo4j-core #17)
191
-
192
- == 2.2.0 / 2012-10-02
193
- * Using neo4j-cypher gem (1.0.0)
194
- * Fix of neo4j-core configuration issue using boolean values #218
195
- * Fixed RSpec issue on JRuby 1.7.x #217
196
- * Aliased has_many to has_n, #183
197
-
198
- == 2.2.0.rc1 / 2012-09-21
199
- * Use neo4j-core and neo4j-wrapper version 2.2.0.rc1
200
- * Use the neo4j-cypher gem
201
- * Better support for Orm Adapter, #212
202
- * Use Cypher query when finder method does not have a lucene index, #210
203
-
204
- == 2.0.1 / 2012-06-06
205
- * Use neo4j-core and neo4j-wrapper version 2.0.1
206
-
207
- == 2.0.0 / 2012-05-07
208
- (same as rc2)
209
-
210
- == 2.0.0.rc2 / 2012-05-04
211
- * Enable Identity Map by default
212
- * Added versioning for Neo4j::Core
213
-
214
- == 2.0.0.rc1 / 2012-05-03
215
- * Fix of rake task to upgrade to 2.0
216
- * Various Cypher DSL improvements, core(#3,#4,#5), #196
217
- * Added Neo4j::VERSION
218
-
219
- == 2.0.0.alpha.9 / 2012-04-27
220
- * Fix for rails scaffold generator
221
-
222
- == 2.0.0.alpha.8 / 2012-04-27
223
- * Fix for "relationship to :all assigned twice for single instance" #178
224
- * Fix for callback fire more then once (=> performance increase) #172
225
- * Support for lucene search on array properties, #118
226
- * Support for creating unique entities (get_or_create) #143
227
- * Support for specifying has_n/has_one relationship with Strings instead of Class #160
228
- * Support for serializer of hash and arrays on properties #185
229
- * Fix for Neo4j::Rails::Relationship default property, #195
230
- * Added support for pagination, see the neo4j-will_paginate gem
231
- * Fixed Rails generators
232
- * Added Cypher DSL support for is_a?
233
- * Fix for "write_attribute persistes, contrary to AR convention" closes #182
234
-
235
- == 2.0.0.alpha.7 / 2012-04-19
236
- * fix for Neo4j::Config bug - did not work from rails to set the db location, closes #191
237
- * has_n and has_one method generate class method returning the name of the relationship as a Symbol, closes #170
238
- * Raise exception if trying to index boolean property, closes #180
239
- * Made start_node= and end_node= protected closes 186
240
- * Support for things like @dungeon.monsters.dangerous { |m| m[:weapon?] == 'sword' } closes #181
241
-
242
- == 2.0.0.alpha.6 / 2012-04-15
243
- * Complete rewrite and smaller change of API + lots of refactoring and better RSpecs
244
- * Moved code to the neo4j-core and neo4j-wrapper gems
245
- * Changed API - index properties using the Neo4j::Rails::Model (property :name, :index => :exact)
246
- * Changed API - rel_type always returns a Symbol
247
- * Changed API - #rels and #rel first parameter is always :outgoing, :incoming or :both
248
- * Cypher DSL support, see neo4j-core
249
- * Made the Lucene indexing more flexible
250
- * Renamed size methods to count since it does simply count all the relationships (e.g. Person.all.count)
251
- * Modularization - e.g. make it possible to create your own wrapper
252
- * Added builder method for has_one relationships (just like ActiveRecord build_best_friend)
253
-
254
- == 2.0.0.alpha.5 / 2012-03-27
255
- * Fix for HA/cluster bug [#173]
256
- * Upgrade to neo4j-community jars 1.7.0.alpha.1
257
- * Fix for rails 3.2 [#131]
258
- * Fix for BatchInserter bug, [#139]
259
- * Added rake task for upgrading [#116]
260
- * Added scripts for upgrading database [#116]
261
-
262
- == 2.0.0.alpha.4 / 2012-01-17
263
- * Fix node and rel enumerable for JRuby 1.9, Dmytrii Nagirniak
264
- * Remove the will_paginate and move it to a separate gem Dmytrii Nagirniak, [#129][#132]
265
- * Use type converter to determine how to handle multi-param attributes, Dmyitrii Nagirniak [#97]
266
- * Set default storage_path in Rails to db [#96]
267
- * Fix numeric Converter with nils and Float converter, Dmytrii Nagirniak
268
- * Fix Neo4j::Rails::Model.find incorrect behavior with negative numbers, Dmytrii Nagirniak [#101]
269
- * Allow to use symbols in batch inserter [#104]
270
- * Split neo4j-jars gem into three jars, community,advanced&enterprise
271
-
272
- == 2.0.0.alpha.1 / 2012-01-11
273
- * Split JARS into a separate gem (neo4j-jars) [#115]
274
- * Changed prefix of relationships so that it allows having incoming relationships from different classes with different relationship names. Migration is needed to update an already existing database - see issue #116. [#117]
275
- * Fix for undefined method 'add_unpersited_outgoing_rel' [#111]
276
- * Fix for Rails models named Property [#108] (Vivek Prahlad)
277
-
278
-
279
- == 1.3.1 / 2011-12-14
280
- * Make all relationships visible in Rails callback (rspecs #87, Dmytrii Nagirniak) [#211]
281
- * Enable travis to build JRuby 1.9 (pull #87, Dmytrii Nagirniak) [#214]
282
- * Support for composite lucene queries with OR and NOT (pull #89, Deepak N)
283
- * Enforce the correct converter on a property type when the type is given (pull #86, Dmytrii Nagirniak)
284
- * Development: make it easier to run RSpecs and guard (pull #85, Dmytrii Nagirniak)
285
- * Added ability to disable observer (pull #84, Dmytrii Nagirniak)
286
- * Fixing multiple assignment of has_one assocaition (pull #83 Deepak N)
287
- * Accept association_id for has_one assocations (pull #82, Deepak N)
288
- * Upgrade to 1.6.M01 Neo4j java jars [#209]
289
- * Defer warning message 'Unknown outgoing relationship' (pull #81, Vivek Prahlad)
290
- * Added string converter, e.g. property :name, :type => String (pull #80, Dmytrii Nagirniak)
291
- * Added symbol converter e.g. property :status, :type => Symbol (pull #79, Dmytrii Nagirniak) [#205]
292
-
293
- == 1.3.0 / 2011-12-06
294
- * Added neo4j-upgrade script to rename lucene index files and upgrade to 1.5 [#197]
295
- * Expose Neo4j::NodeMixin#index_types returning available indices (useful for Cypher queries) [#194]
296
- * The to_other method is now available also in the Neo4j::Rails API [#193]
297
- * Expose rel_type method for Neo4j::Rails::Relationship [#196]
298
- * Support for breadth and depth first traversals [#198]
299
- * Support for cypher query [#197]
300
- * Fix for rule node concurrency issue (pull #78, Vivek Prahlad)
301
- * Bugfix for the uniqueness validation for properties with quotes (pull #76, Vivek Prahlad)
302
- * More performance tweaks (pull #75, #77, Vivek Prahlad)
303
- * Fixing add_index for properties other than type string (pull #74, Deepak N)
304
- * Significant performance boost for creating large numbers of models in a transaction (pull #73, Vivek Prahlad)
305
- * Upgrade to neo4j 1.5 jars (pull #72, Vivek Prahlad)
306
- * Fix for assigning nil values to incoming has_one relation (pull #70, Deepak N)
307
- * Support for revert and fixes for Neo4j::Rails::Versioning (pull #71, Vivek Prahlad)
308
-
309
- == 1.2.6 / 2011-11-02
310
- * Generators can now generate relationships as well [#195]
311
- * Better will_paginate support for Neo4j::Rails::Model [#194]
312
- * Fixing updated_at to be set only if model has changed (pull #68, Deepak N)
313
- * Bringing back changes removed during identiy map to fix bug [#190] (Deepak N)
314
- * Fixing updated_at to be set only if model has changed, using callbacks instead of overriding method for stamping time (Deepak N)
315
- * Added versioning support (pull #67) (Vivek Prahlad)
316
-
317
- == 1.2.5 / 2011-10-21
318
- * Faster traversals by avoiding loading Ruby wrappers (new method 'raw' on traversals) [#189]
319
- * Support for IdentityMap [#188]
320
- * Improved performance in event handler (Vivek Prahlad)
321
- * Fixing issue with validates_presence_of validation (Vivek Prahlad)
322
- * Implemented compositions support on Neo4j::Rails::Relationship (Kalyan Akella)
323
- * Added after_initialize callback (Deepak N)
324
- * Fixed performance issues on node deleted (Vivek Prahlad)
325
- * Fixed a performance issue in the index_registry (Vivek Prahlad)
326
- * Fixed uniqueness validation for :case_sensitive => false (Vivek Prahlad)
327
- * Fixed update_attributes deleting relations when model is invalid (Deepak N)
328
- * Fixed timestamp rails generator (Marcio Toshio)
329
-
330
- == 1.2.4 / 2011-10-07
331
- * Support for traversing with Neo4j::Node#eval_paths and setting uniqueness on traversals [#187]
332
- * Removed unnecessary node creation on database start up (class nodes attached to reference node) (Vivek Prahlad)
333
- * Safer multitenancy - automatically reset the reference node in thread local context after each request using rack middleware
334
- * Bugfixes for multitenancy (Deepak N and Vivek Prahlad)
335
-
336
- == 1.2.3 / 2011-10-01
337
- * Multitenancy support by namespaced-indices & changeable reference node (Vivek Prahlad, pull 41)
338
- * Added a Neo4j::Rails::Model#columns which returns all defined properties [#186]
339
- * Fixed validation associated entities, parent model should be invalid if its nested model(s) is invalid (Vivek Prahlad)
340
- * Fixed property validation to read value before conversion as per active model conventions (Deepak N)
341
- * Fixed property_before_type_cast for loaded models (Deepak N)
342
- * Better support for nested models via ActionView field_for [#185]
343
- * BUG: fix for null pointer issue after delete_all on Neo4j::Rails::Model#has_n relationships (Vivek Prahlad)
344
- * BUG: init_on_create was not called when creating a new relationship via the << operator [#183]
345
-
346
- == 1.2.2 / 2011-09-15
347
- * Added compositions support for rails mode (Deepak N)
348
- * Added support for nested transactions at the Rails model level (Vivek Prahlad)
349
- * Fixing issue where save for invalid entities puts them into an inconsistent state (Vivek Prahlad)
350
- * Fix for issue with save when validation fails (Vivek Prahlad)
351
- * Fix for accepts_nested_attributes_for when the associated entities are created before a new node (Vivek Prahlad)
352
- * Fix to allow has_one relationships to handle nil assignments in models (Vivek Prahlad)
353
- * Observers support for neo4j rails model using active model (Deepak N)
354
- * Override ActiveModel i18n_scope for neo4j (Deepak N)
355
- * Added finders similar to active record and mongoid (Deepak N)
356
- * Added find!, find_or_create_by and find_or_initialize_by methods, similar to active record finders (Deepak N)
357
-
358
- == 1.2.1 / 2011-08-29
359
- * Fixed failing RSpecs for devise-neo4j gem - column_names method on neo4j orm adapter throws NoMethodError (thanks Deepak N)
360
-
361
- == 1.2.0 / 2011-08-16
362
- * Upgrade to java library neo4j 1.4.1, see http://neo4j.rubyforge.org/guides/configuration.html
363
-
364
- == 1.1.4 / 2011-08-10
365
- * Fixed dependency to will_paginate, locked to 3.0.pre4 (newly released 3.0.0 does not work yet with neo4j.rb)
366
-
367
- == 1.1.3 / 2011-08-09
368
- * real recursive rule to the top class, subclasses with rules did not work (Frédéric Vanclef)
369
- * BUG: not able to create array properties on relationships (Pere Urbon)
370
- * BUG: lucene did not work if starting up neo4j in read only mode (like rails console when the rails is already running)
371
-
372
- == 1.1.2 / 2011-06-08
373
- * Added configuration option 'enable_rules' to disable the _all relationships and custom rules [#176]
374
- * Added a #node method on the Neo4j::Node and Neo4j::NodeMixin. Works like the #rel method but returns the node instead. [#174]
375
- * Simplify creating relationship between two existing nodes [#175]
376
-
377
- == 1.1.1 / 2011-05-26
378
- * Made neo4j compatible with rails 3.1.0.rc1 [#170]
379
- * Fix for neo4j-devise [#171]
380
- * BUG: Neo4j::GraphAlgo shortest path does raise exception if two nodes are not connected [#172]
381
-
382
- == 1.1.0 / 2011-05-13
383
- * Support for embedding neo4j.rb by providing an already running db instance (#168)
384
- * Neo4j::Rails::Relationships should be ActiveModel compliant (#156)
385
- * Support for incoming relationships in Neo4j::Rails::Model (#157)
386
- * to_json method for models no tags √ resolved (#154)
387
- * Implement hash so that it will work with Sets (#160)
388
- * Modified the traverser to allow iterating over paths not just over end_nodes (#161)
389
- * Create method should take a block to initialize itself (#162)
390
- * Upgrade to 1.3 neo4j java library (#164)
391
- * Default `nodes' invocation for Algo path finders (#165)
392
- * Property and index class methods modified to take arbitrary number of symbols optionally followed by options hash (#166)
393
- * BUG: Setting property :system on Neo4j::Rails::Model should work (#163)
394
- * BUG: update_attributes should convert values according to Type (#155)
395
- * BUG: Neo4j::RelationshipMixin#relationship_type broken #(169)
396
- * BUG: Relationship.load(nil) == Relationship.load(0) (#167)
397
- * BUG: Full text search returns nil in rails model (#153)
398
-
399
- == 1.0.0 / 2011-03-02
400
- * Complete rewrite of everything.
401
- * Replaced the lucene module with using the java neo4j-lucene integration instead
402
- * Lots of improvements of the API
403
- * Better ActiveModel/Rails integration
404
-
405
- == 0.4.4 / 2010-08-01
406
- * Fixed bug on traversing when using the RelationshipMixin (#121)
407
- * BatchInserter and JRuby 1.6 - Fix iteration error with trying to modify in-place hash
408
-
409
- == 0.4.3 / 2010-04-10
410
- * Fixed .gitignore - make sure that we do not include unnecessarily files like neo4j databases. Release 0.4.2 contained test data.
411
- * Added synchronize around Index.new so that two thread can't modify the same index at the same time.
412
-
413
- == 0.4.2 / 2010-04-08
414
- * No index on properties for the initialize method bug (#116)
415
- * Tidy up Thread Synchronization in Lucene wrapper - lucene indexing performance improvement (#117)
416
- * Permission bug loading neo4j jar file (#118)
417
- * Spike: Make NodeMixin ActiveModel complient - experimental (#115)
418
-
419
- == 0.4.1 / 2010-03-11
420
- * Migrations (#108)
421
- * BatchInserter (#111)
422
- * Neo4j::Relationship.new should take a hash of properties (#110)
423
- * Upgrade to neo4j-1.0 (#114)
424
- * Bigfix: has_one should replace old relationship (#106)
425
- * Bugfix: custom accessors for NodeMixin#update (#113)
426
- * Bugfix: Indexed properties problem on extented ruby classes critical "properties indexer" (#112)
427
-
428
- == 0.4.0 / 2010-02-06
429
- * Performance improvements and Refactoring: Use and Extend Neo4j Java Classes (#97)
430
- * Support for Index and Declaration of Properties on Relationships (#91)
431
- * Upgrade to neo4j-1.0 rc (#100)
432
- * All internal properties should be prefix with a '_',0.4.0 (#105)
433
- * Generate relationship accessor methods for declared has_n and has_one relationships (#104)
434
- * New way of creating relationship - Neo4j::Relationship.new (#103)
435
- * Neo4j#init_node method should take one or more args (#98)
436
- * Namespaced relationships: has_one...from using the wrong has_n...to(#92)
437
- * Neo4j::NodeMixin and Neo4j::Node should allow a hash for initialization (#99)
438
-
439
- == 0.3.3 / 2009-11-25
440
- * Support for a counter property on has_lists (#75)
441
- * Support for Cascade delete. On has_n, had_one and has_list (#81)
442
- * NodeMixin#all should work with inheritance - Child classes should have a relationship of their own. (#64)
443
- * Support for other lucene analyzer then StandardAnalyzer (#87)
444
- * NodeMixin initialize should accept block like docs (#82)
445
- * Add incoming relationship should work as expected: n1.relationships.incoming(:foo) << n2 (#80)
446
- * Delete node from a has_list relationship should work as expected (#79)
447
- * Improve stacktraces (#94)
448
- * Removed sideeffect of rspecs (#90)
449
- * Add debug method on NodeMixin to print it self (#88)
450
- * Removed to_a method (#73)
451
- * Upgrade to neo4j-1.0b10 (#95)
452
- * Upgrade to lucene 2.9.0 (#83)
453
- * Refactoring: RSpecs (#74)
454
- * Refactoring: aggregate each, renamed to property aggregator (#72)
455
- * BugFix: neo4j gem cannot be built from the source (#86)
456
- * BugFix: Neo4j::relationship should not raise Exception if there are no relationships (#78)
457
-
458
- == 0.3.2 / 2009-09-17
459
- * Added support for aggregating nodes (#65)
460
- * Wrapped Neo4j GraphAlgo AllSimplePath (#70)
461
- * Added traversal with traversal position (#71)
462
- * Removed DynamicAccessors mixin, replaced by [] operator (#67)
463
- * Impl Neo4j.all_nodes (#69)
464
- * Upgrated Neo4j jar file to 1.0-b9
465
- * The Neo4j#relationship method now allows a filter parameter (#66)
466
- * Neo4j.rb now can read database not created by Neo4j.rb - does not require classname property (#63)
467
- * REST - added an "all" value for the depth traversal query parameter (#62)
468
- * REST - Performance improvments using the Rest Mixin (#60)
469
-
470
- == 0.3.1 / 2009-07-25
471
- * Feature, extension - find path between given pair of nodes (#58)
472
- * Fix a messy exception on GET /nodes/UnknownClassName (#57)
473
- * Bug - exception on GET /nodes/classname/rel if rel is a has_one relationship (#56)
474
- * Bug: GET /nodes/classname missing out nodes with no properties (#55)
475
- * Bug: Lucene sorting caused exception if there were no documents (#54)
476
- * Bug: reindexer fails to connect nodes to the IndexNode (#53)
477
-
478
- == 0.3.0 / 2009-06-25
479
- * Neo4j should track node changes
480
- * RESTful support for lucene queries, sorting and paging
481
- * RESTful support for Relationships
482
- * RESTful support for Node and properties
483
- * Experimental support for Master-Slave Replication via REST
484
- * RESTful Node representation should contain hyperlinks to relationships
485
- * Added some handy method like first and empty? on relationships
486
- * Use new neo4j: neo-1.0-b8
487
- * Add an event handler for create/delete nodes start/stop neo, update property/relationship
488
- * The NodeMixin should behave like a hash, added [] and []= methods
489
- * Support list topology - has_list and belongs_to_list Neo4j::NodeMixin Classmethods
490
- * Should be possible to add relationships without declaring them (Neo4j#relationships.outgoing(:friends) << node)
491
- * Neo4j extensions file structure, should be easy to create your own extensions
492
- * Rename relation to relationship (Neo4j::Relations => Neo4j::Relationships, DynamicRelation => Relationship) [data incompatible change]
493
- * Auto Transaction is now optional
494
- * Setting Float properties fails under JRuby1.2.0
495
- * Bug: Indexing relationships does not work
496
- * Make the ReferenceNode include Neo4j::NodeMixin
497
- * Added handy Neo4j class that simply includes the Neo4j::NodeMixin
498
- * Neo4j::IndexNode now holds references to all nodes (Neo4j.ref_node -> Neo4j::IndexNode -> ...)
499
-
500
-
501
- == 0.2.1 / 2009-03-15
502
- * Refactoring of lucene indexing of the node space (28)
503
- * Fixed bug on Neo4j::Nodemixin#property? (#22)
504
-
505
-
506
- == 0.2.0 / 2009-01-20
507
- * Impl. Neo4j::Node#traverse - enables traversal and filtering using TraversalPosition info (#17,#19)
508
- * Impl. traversal to any depth (#15)
509
- * Impl. traversal several relationships type at the same time (#16)
510
- * Fixed a Lucene timezone bug (#20)
511
- * Lots of refactoring of the neo4j.rb traversal code and RSpecs
512
-
513
- == 0.1.0 / 2008-12-18
514
- * Property can now be of any type (and not only String, Fixnum, Float)
515
- * Indexing and Query with Date and DateTime
516
- * YARD documentation
517
- * Properties can be removed
518
- * A property can be set to nil (it will then be removed).
519
-
520
- == 0.0.7 / 2008-12-10
521
- * Added method to_param and methods on the value object needed for Ruby on Rails
522
- * Impl. update from a value object/hash for a node
523
- * Impl. generation of value object classes/instances from a node.
524
- * Refactoring the Transaction handling (reuse PlaceboTransaction instances if possible)
525
- * Removed the need to start and stop neo. It will be done automatically when needed.
526
-
527
-
528
- == 0.0.6 / 2008-12-03
529
- * Removed the configuration from the Neo4j.start method. Now exist in Neo4j::Config and Lucene::Config.
530
- * Implemented sort_by method.
531
- * Lazy loading of search result. Execute the query and load the nodes only if needed.
532
- * Added support to use lucene query language, example: Person.find("name:foo AND age:42")
533
- * All test now uses RAM based lucene indexes.
534
-
535
- == 0.0.5 / 2008-11-17
536
- * Supports keeping lucene index in memory instead of on disk
537
- * Added support for lucene full text search
538
- * Fixed so neo4j runs on JRuby 1.1.5
539
- * Implemented support for reindex all instances of a node class. This is needed if the lucene index is kept in memory or if the index is changed.
540
- * Added ReferenceNode. All nodes now have a relationship from this reference node.
541
- * Lots of refactoring
542
- * Added the IMDB example. It shows how to create a neo database, lucene queries and node traversals.
543
-
544
- == 0.0.4 / 2008-10-23
545
- * First release to rubyforge