neo4j 4.1.5 → 5.0.0.rc.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.
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