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
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 90e5351c11b66404c346897f3ba83937cb5b3ed6
4
- data.tar.gz: 1c3050eb358c17051fbe2d030073cd2bcd0001c3
3
+ metadata.gz: 19bac2c295497bd6632e83e40c059dab77d26d11
4
+ data.tar.gz: c93f1710a37922f991bbc1f0199de3d924be3026
5
5
  SHA512:
6
- metadata.gz: b55efb4020d95d12471fa87df726406e9583c6e157e52dca7fd30b46bbed7dfc5ef7f90a0a5b2c37afaf38342c83e9de6e37742a3202b271b338dc6bcf848558
7
- data.tar.gz: f6983b0021f2cddea0ca60e851b7410fb0abea18bb94c341d774dca14db89600a53b3efa8d9a55ffdfc0b72de26615f3f1ae18c4eb165749b4005a446e3477c4
6
+ metadata.gz: 804cd6fce887e07ddd4a0e9e23206f62c184349952c279a7a693963fc7703e909e43d33b1d0251bf046c5cdc3a5211dca3e6b583db268aa46286316acef4cb24
7
+ data.tar.gz: 5d83c739166b8d58a035af4a65b5253d26811894c7bed8b33384b54fb334e1fdc9684c6f215840ba58ef0acfe5d040675599c31de63d89329700b37df08bbf2f
@@ -0,0 +1,584 @@
1
+ # Change Log
2
+ All notable changes to this project will be documented in this file.
3
+ This file should follow the standards specified on [http://keepachangelog.com/]
4
+ This project adheres to [Semantic Versioning](http://semver.org/).
5
+
6
+ ## [Unreleased][unreleased]
7
+ - Nothing yet, placeholder
8
+
9
+ ## [5.0.0] - 2015-05-20
10
+
11
+ ### Changed
12
+ - Ruby 2.0.0 now required (>= 2.2.1 is recommended)
13
+ - All `ActiveNode` associations now require either a `type`, `origin`, or `rel_class` option. Only one is allowed
14
+ - Defining associations will fail if unknown options are used (#796)
15
+ - `Model#find` fails if no node found (`Model#find_by` available when `nil` result desired) (#799)
16
+ - `#find_or_create` and `#merge` model class methods have been added
17
+ - Ensuring that all model callbacks are happening within transactions
18
+ - Major refactoring using `rubocop` with a lot of focus on speed improvements
19
+ - Specifically when loading many nodes at once we've measured 3x speed improvements
20
+
21
+ ### Fixed
22
+ - `#find` on `QueryProxy` objects now does a model `find` rather than an `Enumerable` find
23
+ - Subclassed model classes now both create and query against it's ancestor's labels in addition to it's own (#690)
24
+ - `#first` and `#last` now work property when precedend by an `#order` in a `QueryProxy` chain (#720)
25
+ - `#count` when called after `#limit` will be performed within the bounds of limit specified
26
+
27
+ ### Added
28
+ - Eager Loading is now supported! See: [http://neo4jrb.readthedocs.org/en/latest/ActiveNode.html#eager-loading]
29
+ - Associations now return `AssociationProxy` objects (which are `Enumerable`) which have convenient `#inspect` methods for cleaner viewing in the Ruby console
30
+ - `model_class` key on associations now supports an Array (#589)
31
+ - When using `all` inside of a class method an argument for the node name can now be passed in (#737)
32
+ - Query(Proxy) syntax of `where("foo = ?", val)` and `where("foo = {bar}", bar: val)` now supported (#675)
33
+ - `module_handling` config option now available to control how class module namespaces translate to Neo4j labels (#753) (See: [http://neo4jrb.readthedocs.org/en/latest/Configuration.html])
34
+ - `#id_property` method has new `constraints` option to disable automatic uuid constraint (#738/#736)
35
+
36
+ (There are probably other changes too!)
37
+
38
+ **Changes above this point should conform to [http://keepachangelog.com/]**
39
+
40
+ ## [4.1.2]
41
+ - 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.
42
+
43
+ ## [4.1.1]
44
+ - Switches use of Fixnum to Integer to improve 32-bit support
45
+
46
+ ## [4.1.0]
47
+ This release includes many performance fixes and new features. The most notable:
48
+ - 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.
49
+ - Every node create, update, and destroy is now wrapped in a transaction. See http://neo4jrb.io/blog/2015/01/06/transactions_everywhere.html.
50
+ - New `dependent` options for associations: `:delete`, `:destroy`, `:delete_orphans`, `:destroy_orphans`. See http://neo4jrb.io/blog/2015/01/07/association_dependent_options.html.
51
+ - 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".
52
+ - Fixed an n+1 query issue during node creation and update.
53
+ - Dieter simplified some code related to frozen attributes. See https://github.com/neo4jrb/neo4j/pull/655.
54
+ 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.
55
+
56
+ ## [4.0.0]
57
+ - Change neo4j-core dependency from 3.1.0 to 4.0.0.
58
+
59
+ ## [4.0.0.rc.4]
60
+ - _classname property is disabled by default for ActiveRel! It had been disabled for ActiveNode, this just evens the score.
61
+ - Fixes a bug to create better `result` labels in Cypher.
62
+ - 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.
63
+
64
+ ## [4.0.0.rc.3]
65
+ Released minutes after rc.2 to catch one late addition!
66
+ - Adds serialization support for QueryProxy.
67
+
68
+ ## [4.0.0.rc.2]
69
+ 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.
70
+ - New `proxy_as` for Core::Query to build QueryProxy chains onto Core::Query objects!
71
+ - Using `proxy_as`, new `optional` method in QueryProxy to use the `OPTIONAL MATCH` Cypher function.
72
+ - `match_to` and methods that depend on it now support arrays of nodes or IDs.
73
+ - New `rels_to`/`all_rels_to` methods.
74
+ - New `delete` and `destroy` methods in QueryProxy to easily remove relationships.
75
+ - Serialized objects will include IDs by default.
76
+
77
+ ## [4.0.0.rc.1]
78
+ 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.
79
+ 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).
80
+ - Default behavior changed: relationship types default to all caps, no prepending of "#". This behavior can be changed.
81
+ - 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.
82
+ - _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.
83
+ - Query scopes are now chainable! Call `all` at the start of your scope or method to take advantage of this.
84
+ - Changes required for Neo4j 2.2.
85
+ - Support for custom typecasters.
86
+ - New method `rel_where`, expanded behavior of `match_to` and `first_rel_to`
87
+ - Implemented ActiveSupport load hooks.
88
+ - Assorted performance improvements and refactoring.
89
+
90
+ ## [3.0.4]
91
+ - Gemspec requires the latest neo4j-core.
92
+ - Fixed a pagination bug — thanks, @chrisgogreen!
93
+ - New QueryProxy methods `match_to` and `first_rel_to` are pretty cool.
94
+ - include_root_in_json is now configurable through config.neo4j.include_root_in_json or Neo4j::Config[:include_root_in_json]. Also cool.
95
+ - There's a new `delete_all` method for QueryProxy, too.
96
+ - @codebeige removed the `include?` class method, which was smart.
97
+ - Did I mention we won an award from Neo Tech? Check it out. https://github.com/neo4jrb/neo4j#welcome-to-neo4jrb
98
+
99
+ ## [3.0.3]
100
+ - Gemspec has been updated to require neo4j-core 3.0.5
101
+ - Added `find_in_batches`
102
+ - Pagination has been updated to allow better ordering. Relaunch of neo4j-will_paginate as neo4j-will_paginate_redux is imminent!
103
+ - 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
104
+ - Added a new find_or_create_by class method
105
+
106
+ 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
107
+
108
+ ## [3.0.2]
109
+ - "Model#all" now evaluates lazily, models no longer include Enumerable
110
+ - Faster, more efficient uniqueness validations
111
+ - Adjusted many common queries to use params, will improve performance
112
+ - 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
113
+ - Allow inheritance when checking model class on a relation (Andrew Jones)
114
+ - Provided migrations will use Rake.original_dir instead of Rails.env to provide better compatibility with frameworks other than Rails
115
+ - rel_class option in ActiveNode models will now accept string of a model name
116
+ - Additional bug fixes
117
+
118
+ ## [3.0.1]
119
+ - Removed reference to neo4j-core from Gemfile and set neo4j.gemspec to use neo4j-core ~>3.0.0
120
+
121
+ ## [3.0.0]
122
+ No change from rc 4
123
+
124
+ ## [3.0.0.rc.4]
125
+ - UUIDs are now automatically specified on models as neo IDs won't be reliable
126
+ in future versions of neo4j
127
+ - Migrations now supported (including built-in migrations to migrate UUIDs and
128
+ insert the _classname property which is used for performance)
129
+ - Association reflection
130
+ - Model.find supports ids/node objects as well as arrays of id/node objects
131
+ - rake tasks now get automatically included into rails app
132
+
133
+
134
+ ## [3.0.0.rc.3]
135
+ - thread safety improvements
136
+ - scope and general refactoring
137
+ - Added ability to create relationships on init (persisted on save)
138
+
139
+ ## [3.0.0.rc.2]
140
+ - Use newer neo4j-core release
141
+
142
+ ## [3.0.0.rc.1]
143
+ - Support for count, size, length, empty, blank? for has_many relationship
144
+ - Support for rails logger of cypher queries in development
145
+ - Support for distinct count
146
+ - Optimized methods: https://github.com/andreasronge/neo4j/wiki/Optimized-Methods
147
+ - Queries should respect mapped label names (#421)
148
+ - Warn if no session is available
149
+ - Fix broken == and equality (#424)
150
+
151
+ ## [3.0.0.alpha.11]
152
+ - Bug fixes
153
+
154
+ ## [3.0.0.alpha.10]
155
+ - ActiveRel support, see Wiki pages (chris #393)
156
+
157
+ ## [3.0.0.alpha.9]
158
+ - Complete rewrite of the query api, see wiki page (#406, chris, brian)
159
+ - Performance improvements (#382,#400, #402, chris)
160
+ - idproperty - user defined primary keys (#396,#389)
161
+ - Reimplementation of Neo4j::Config
162
+ - Serialization of node properties (#381)
163
+ - Better first,last syntax (#379)
164
+
165
+ ## [3.0.0.alpha.8]
166
+ - Integration with new Query API from neo4j-core including:
167
+ - - .query_as and #query_as methods to get queries from models (#366)
168
+ - - .qq method for QuickQuery syntax ( https://github.com/andreasronge/neo4j/wiki/Neo4j-v3#quickquery-work-in-progress / #366)
169
+ - Before and after callbacks on associations (#373)
170
+ - .find / .all / .count changed to be more like ActiveRecord
171
+ - .first / .last methods (#378)
172
+ - .find_by / .find_by! (#375)
173
+
174
+ ## [3.0.0.alpha.7]
175
+ - Bug fix uniqueness-validator (#356 from JohnKellyFerguson)
176
+ - Many improvements, like update_attributes and validation while impl orm_adapter, Brian Underwood
177
+ - Impl orm_adapter API for neo4j so it can be used from for example devise, Brian Underwood (#355)
178
+ - Fix of inheritance of Neo4j::ActiveNode (#307)
179
+ - Expose add_label, and remove_label (#335)
180
+ - Fixed auto loading of classes bug, (#349)
181
+ - Bumped neo4j-core, 3.0.0.alpha.16
182
+
183
+ ## [3.0.0.alpha.6]
184
+ - Support for Heroku URLs, see wiki https://github.com/andreasronge/neo4j/wiki/Neo4j-v3 (#334)
185
+
186
+ ## [3.0.0.alpha.5]
187
+ - Added allow session options via 'config.neo4j.session_options' so it can run on heroku (#333)
188
+ - Relaxed Dependencies for Rails 4.1 (#332)
189
+ - Using neo4j-core version 3.0.0.alpha.12
190
+
191
+ ## [3.0.0.alpha.4]
192
+ - Implemented validates_uniqueness_of (#311)
193
+ - Using neo4j-core version 3.0.0.alpha.11
194
+
195
+ ## [3.0.0.alpha.3]
196
+ - Support for rails scaffolds
197
+ - Support for created_at and updated_at (#305)
198
+ - Support for ability to select a session to use per model (#299)
199
+ - BugFix: updating a model should not clear out old properties (#296)
200
+
201
+ ## [3.0.0.alpha.2]
202
+ - Support for both embedded (only JRuby) and server API (runs on MRI Ruby !)
203
+ - Simple Rails app now work
204
+ - Support for has_n and has_one method
205
+ - ActiveModel support, callback, validation
206
+ - Declared properties (via active_attr gem)
207
+
208
+ ## [2.3.0 / 2013-07-18]
209
+ - Fix Issue with HA console when ruby-debug is loaded (#261, thekendalmiller)
210
+ - Use 1.9 Neo4j
211
+
212
+ ## [2.2.4 / 2013-05-19]
213
+ - get_or_create should return wrapped ruby nodes, alex-klepa, #241, #246
214
+ - Make sure freeze does not have side effects, #235
215
+ - Fix for carrierwave-neo4j (attribute_defaults), #235
216
+
217
+ ## [2.2.3 / 2012-12-28]
218
+ - Support for HA cluster with neo4j 1.9.X, #228, #99, #223
219
+ - Make sure the Identity map is cleared after an exception, #214
220
+ - Relationship other_node should return wrapped node, #226
221
+ - Automatically convert DateTimes to UTC, (neo4j-wrapper #7)
222
+ - get_or_create should return a wrapped node (neo4j-wrapper #8)
223
+ - Make it work with Neo4j 1.7.1 (neo4j-core, #19)
224
+
225
+ ## [2.2.2 - skipped]
226
+
227
+ ## [2.2.1 / 2012-12-18]
228
+ - Fix for JRuby 1.7.1 and Equal #225
229
+ - Fix for create nodes and relationship using Cypher (neo4j-core #17)
230
+
231
+ ## [2.2.0 / 2012-10-02]
232
+ - Using neo4j-cypher gem (1.0.0)
233
+ - Fix of neo4j-core configuration issue using boolean values #218
234
+ - Fixed RSpec issue on JRuby 1.7.x #217
235
+ - Aliased has_many to has_n, #183
236
+
237
+ ## [2.2.0.rc1 / 2012-09-21]
238
+ - Use neo4j-core and neo4j-wrapper version 2.2.0.rc1
239
+ - Use the neo4j-cypher gem
240
+ - Better support for Orm Adapter, #212
241
+ - Use Cypher query when finder method does not have a lucene index, #210
242
+
243
+ ## [2.0.1 / 2012-06-06]
244
+ - Use neo4j-core and neo4j-wrapper version 2.0.1
245
+
246
+ ## [2.0.0 / 2012-05-07]
247
+ (same as rc2)
248
+
249
+ ## [2.0.0.rc2 / 2012-05-04]
250
+ - Enable Identity Map by default
251
+ - Added versioning for Neo4j::Core
252
+
253
+ ## [2.0.0.rc1 / 2012-05-03]
254
+ - Fix of rake task to upgrade to 2.0
255
+ - Various Cypher DSL improvements, core(#3,#4,#5), #196
256
+ - Added Neo4j::VERSION
257
+
258
+ ## [2.0.0.alpha.9 / 2012-04-27]
259
+ - Fix for rails scaffold generator
260
+
261
+ ## [2.0.0.alpha.8 / 2012-04-27]
262
+ - Fix for "relationship to :all assigned twice for single instance" #178
263
+ - Fix for callback fire more then once (=> performance increase) #172
264
+ - Support for lucene search on array properties, #118
265
+ - Support for creating unique entities (get_or_create) #143
266
+ - Support for specifying has_n/has_one relationship with Strings instead of Class #160
267
+ - Support for serializer of hash and arrays on properties #185
268
+ - Fix for Neo4j::Rails::Relationship default property, #195
269
+ - Added support for pagination, see the neo4j-will_paginate gem
270
+ - Fixed Rails generators
271
+ - Added Cypher DSL support for is_a?
272
+ - Fix for "write_attribute persistes, contrary to AR convention" closes #182
273
+
274
+ ## [2.0.0.alpha.7 / 2012-04-19]
275
+ - fix for Neo4j::Config bug - did not work from rails to set the db location, closes #191
276
+ - has_n and has_one method generate class method returning the name of the relationship as a Symbol, closes #170
277
+ - Raise exception if trying to index boolean property, closes #180
278
+ - Made start_node= and end_node= protected closes 186
279
+ - Support for things like @dungeon.monsters.dangerous { |m| m[:weapon?] == 'sword' } closes #181
280
+
281
+ ## [2.0.0.alpha.6 / 2012-04-15]
282
+ - Complete rewrite and smaller change of API + lots of refactoring and better RSpecs
283
+ - Moved code to the neo4j-core and neo4j-wrapper gems
284
+ - Changed API - index properties using the Neo4j::Rails::Model (property :name, :index => :exact)
285
+ - Changed API - rel_type always returns a Symbol
286
+ - Changed API - #rels and #rel first parameter is always :outgoing, :incoming or :both
287
+ - Cypher DSL support, see neo4j-core
288
+ - Made the Lucene indexing more flexible
289
+ - Renamed size methods to count since it does simply count all the relationships (e.g. Person.all.count)
290
+ - Modularization - e.g. make it possible to create your own wrapper
291
+ - Added builder method for has_one relationships (just like ActiveRecord build_best_friend)
292
+
293
+ ## [2.0.0.alpha.5 / 2012-03-27]
294
+ - Fix for HA/cluster bug [#173]
295
+ - Upgrade to neo4j-community jars 1.7.0.alpha.1
296
+ - Fix for rails 3.2 [#131]
297
+ - Fix for BatchInserter bug, [#139]
298
+ - Added rake task for upgrading [#116]
299
+ - Added scripts for upgrading database [#116]
300
+
301
+ ## [2.0.0.alpha.4 / 2012-01-17]
302
+ - Fix node and rel enumerable for JRuby 1.9, Dmytrii Nagirniak
303
+ - Remove the will_paginate and move it to a separate gem Dmytrii Nagirniak, [#129][#132]
304
+ - Use type converter to determine how to handle multi-param attributes, Dmyitrii Nagirniak [#97]
305
+ - Set default storage_path in Rails to db [#96]
306
+ - Fix numeric Converter with nils and Float converter, Dmytrii Nagirniak
307
+ - Fix Neo4j::Rails::Model.find incorrect behavior with negative numbers, Dmytrii Nagirniak [#101]
308
+ - Allow to use symbols in batch inserter [#104]
309
+ - Split neo4j-jars gem into three jars, community,advanced&enterprise
310
+
311
+ == 2.0.0.alpha.1 / 2012-01-11
312
+ - Split JARS into a separate gem (neo4j-jars) [#115]
313
+ - 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]
314
+ - Fix for undefined method 'add_unpersited_outgoing_rel' [#111]
315
+ - Fix for Rails models named Property [#108] (Vivek Prahlad)
316
+
317
+
318
+ == 1.3.1 / 2011-12-14
319
+ - Make all relationships visible in Rails callback (rspecs #87, Dmytrii Nagirniak) [#211]
320
+ - Enable travis to build JRuby 1.9 (pull #87, Dmytrii Nagirniak) [#214]
321
+ - Support for composite lucene queries with OR and NOT (pull #89, Deepak N)
322
+ - Enforce the correct converter on a property type when the type is given (pull #86, Dmytrii Nagirniak)
323
+ - Development: make it easier to run RSpecs and guard (pull #85, Dmytrii Nagirniak)
324
+ - Added ability to disable observer (pull #84, Dmytrii Nagirniak)
325
+ - Fixing multiple assignment of has_one assocaition (pull #83 Deepak N)
326
+ - Accept association_id for has_one assocations (pull #82, Deepak N)
327
+ - Upgrade to 1.6.M01 Neo4j java jars [#209]
328
+ - Defer warning message 'Unknown outgoing relationship' (pull #81, Vivek Prahlad)
329
+ - Added string converter, e.g. property :name, :type => String (pull #80, Dmytrii Nagirniak)
330
+ - Added symbol converter e.g. property :status, :type => Symbol (pull #79, Dmytrii Nagirniak) [#205]
331
+
332
+ == 1.3.0 / 2011-12-06
333
+ - Added neo4j-upgrade script to rename lucene index files and upgrade to 1.5 [#197]
334
+ - Expose Neo4j::NodeMixin#index_types returning available indices (useful for Cypher queries) [#194]
335
+ - The to_other method is now available also in the Neo4j::Rails API [#193]
336
+ - Expose rel_type method for Neo4j::Rails::Relationship [#196]
337
+ - Support for breadth and depth first traversals [#198]
338
+ - Support for cypher query [#197]
339
+ - Fix for rule node concurrency issue (pull #78, Vivek Prahlad)
340
+ - Bugfix for the uniqueness validation for properties with quotes (pull #76, Vivek Prahlad)
341
+ - More performance tweaks (pull #75, #77, Vivek Prahlad)
342
+ - Fixing add_index for properties other than type string (pull #74, Deepak N)
343
+ - Significant performance boost for creating large numbers of models in a transaction (pull #73, Vivek Prahlad)
344
+ - Upgrade to neo4j 1.5 jars (pull #72, Vivek Prahlad)
345
+ - Fix for assigning nil values to incoming has_one relation (pull #70, Deepak N)
346
+ - Support for revert and fixes for Neo4j::Rails::Versioning (pull #71, Vivek Prahlad)
347
+
348
+ == 1.2.6 / 2011-11-02
349
+ - Generators can now generate relationships as well [#195]
350
+ - Better will_paginate support for Neo4j::Rails::Model [#194]
351
+ - Fixing updated_at to be set only if model has changed (pull #68, Deepak N)
352
+ - Bringing back changes removed during identiy map to fix bug [#190] (Deepak N)
353
+ - Fixing updated_at to be set only if model has changed, using callbacks instead of overriding method for stamping time (Deepak N)
354
+ - Added versioning support (pull #67) (Vivek Prahlad)
355
+
356
+ == 1.2.5 / 2011-10-21
357
+ - Faster traversals by avoiding loading Ruby wrappers (new method 'raw' on traversals) [#189]
358
+ - Support for IdentityMap [#188]
359
+ - Improved performance in event handler (Vivek Prahlad)
360
+ - Fixing issue with validates_presence_of validation (Vivek Prahlad)
361
+ - Implemented compositions support on Neo4j::Rails::Relationship (Kalyan Akella)
362
+ - Added after_initialize callback (Deepak N)
363
+ - Fixed performance issues on node deleted (Vivek Prahlad)
364
+ - Fixed a performance issue in the index_registry (Vivek Prahlad)
365
+ - Fixed uniqueness validation for :case_sensitive => false (Vivek Prahlad)
366
+ - Fixed update_attributes deleting relations when model is invalid (Deepak N)
367
+ - Fixed timestamp rails generator (Marcio Toshio)
368
+
369
+ == 1.2.4 / 2011-10-07
370
+ - Support for traversing with Neo4j::Node#eval_paths and setting uniqueness on traversals [#187]
371
+ - Removed unnecessary node creation on database start up (class nodes attached to reference node) (Vivek Prahlad)
372
+ - Safer multitenancy - automatically reset the reference node in thread local context after each request using rack middleware
373
+ - Bugfixes for multitenancy (Deepak N and Vivek Prahlad)
374
+
375
+ == 1.2.3 / 2011-10-01
376
+ - Multitenancy support by namespaced-indices & changeable reference node (Vivek Prahlad, pull 41)
377
+ - Added a Neo4j::Rails::Model#columns which returns all defined properties [#186]
378
+ - Fixed validation associated entities, parent model should be invalid if its nested model(s) is invalid (Vivek Prahlad)
379
+ - Fixed property validation to read value before conversion as per active model conventions (Deepak N)
380
+ - Fixed property_before_type_cast for loaded models (Deepak N)
381
+ - Better support for nested models via ActionView field_for [#185]
382
+ - BUG: fix for null pointer issue after delete_all on Neo4j::Rails::Model#has_n relationships (Vivek Prahlad)
383
+ - BUG: init_on_create was not called when creating a new relationship via the << operator [#183]
384
+
385
+ == 1.2.2 / 2011-09-15
386
+ - Added compositions support for rails mode (Deepak N)
387
+ - Added support for nested transactions at the Rails model level (Vivek Prahlad)
388
+ - Fixing issue where save for invalid entities puts them into an inconsistent state (Vivek Prahlad)
389
+ - Fix for issue with save when validation fails (Vivek Prahlad)
390
+ - Fix for accepts_nested_attributes_for when the associated entities are created before a new node (Vivek Prahlad)
391
+ - Fix to allow has_one relationships to handle nil assignments in models (Vivek Prahlad)
392
+ - Observers support for neo4j rails model using active model (Deepak N)
393
+ - Override ActiveModel i18n_scope for neo4j (Deepak N)
394
+ - Added finders similar to active record and mongoid (Deepak N)
395
+ - Added find!, find_or_create_by and find_or_initialize_by methods, similar to active record finders (Deepak N)
396
+
397
+ == 1.2.1 / 2011-08-29
398
+ - Fixed failing RSpecs for devise-neo4j gem - column_names method on neo4j orm adapter throws NoMethodError (thanks Deepak N)
399
+
400
+ == 1.2.0 / 2011-08-16
401
+ - Upgrade to java library neo4j 1.4.1, see http://neo4j.rubyforge.org/guides/configuration.html
402
+
403
+ == 1.1.4 / 2011-08-10
404
+ - Fixed dependency to will_paginate, locked to 3.0.pre4 (newly released 3.0.0 does not work yet with neo4j.rb)
405
+
406
+ == 1.1.3 / 2011-08-09
407
+ - real recursive rule to the top class, subclasses with rules did not work (Frédéric Vanclef)
408
+ - BUG: not able to create array properties on relationships (Pere Urbon)
409
+ - BUG: lucene did not work if starting up neo4j in read only mode (like rails console when the rails is already running)
410
+
411
+ == 1.1.2 / 2011-06-08
412
+ - Added configuration option 'enable_rules' to disable the _all relationships and custom rules [#176]
413
+ - Added a #node method on the Neo4j::Node and Neo4j::NodeMixin. Works like the #rel method but returns the node instead. [#174]
414
+ - Simplify creating relationship between two existing nodes [#175]
415
+
416
+ == 1.1.1 / 2011-05-26
417
+ - Made neo4j compatible with rails 3.1.0.rc1 [#170]
418
+ - Fix for neo4j-devise [#171]
419
+ - BUG: Neo4j::GraphAlgo shortest path does raise exception if two nodes are not connected [#172]
420
+
421
+ == 1.1.0 / 2011-05-13
422
+ - Support for embedding neo4j.rb by providing an already running db instance (#168)
423
+ - Neo4j::Rails::Relationships should be ActiveModel compliant (#156)
424
+ - Support for incoming relationships in Neo4j::Rails::Model (#157)
425
+ - to_json method for models no tags √ resolved (#154)
426
+ - Implement hash so that it will work with Sets (#160)
427
+ - Modified the traverser to allow iterating over paths not just over end_nodes (#161)
428
+ - Create method should take a block to initialize itself (#162)
429
+ - Upgrade to 1.3 neo4j java library (#164)
430
+ - Default `nodes' invocation for Algo path finders (#165)
431
+ - Property and index class methods modified to take arbitrary number of symbols optionally followed by options hash (#166)
432
+ - BUG: Setting property :system on Neo4j::Rails::Model should work (#163)
433
+ - BUG: update_attributes should convert values according to Type (#155)
434
+ - BUG: Neo4j::RelationshipMixin#relationship_type broken #(169)
435
+ - BUG: Relationship.load(nil) == Relationship.load(0) (#167)
436
+ - BUG: Full text search returns nil in rails model (#153)
437
+
438
+ ## [1.0.0 / 2011-03-02]
439
+ - Complete rewrite of everything.
440
+ - Replaced the lucene module with using the java neo4j-lucene integration instead
441
+ - Lots of improvements of the API
442
+ - Better ActiveModel/Rails integration
443
+
444
+ ## [0.4.4 / 2010-08-01]
445
+ - Fixed bug on traversing when using the RelationshipMixin (#121)
446
+ - BatchInserter and JRuby 1.6 - Fix iteration error with trying to modify in-place hash
447
+
448
+ ## [0.4.3 / 2010-04-10]
449
+ - Fixed .gitignore - make sure that we do not include unnecessarily files like neo4j databases. Release 0.4.2 contained test data.
450
+ - Added synchronize around Index.new so that two thread can't modify the same index at the same time.
451
+
452
+ ## [0.4.2 / 2010-04-08]
453
+ - No index on properties for the initialize method bug (#116)
454
+ - Tidy up Thread Synchronization in Lucene wrapper - lucene indexing performance improvement (#117)
455
+ - Permission bug loading neo4j jar file (#118)
456
+ - Spike: Make NodeMixin ActiveModel complient - experimental (#115)
457
+
458
+ ## [0.4.1 / 2010-03-11]
459
+ - Migrations (#108)
460
+ - BatchInserter (#111)
461
+ - Neo4j::Relationship.new should take a hash of properties (#110)
462
+ - Upgrade to neo4j-1.0 (#114)
463
+ - Bigfix: has_one should replace old relationship (#106)
464
+ - Bugfix: custom accessors for NodeMixin#update (#113)
465
+ - Bugfix: Indexed properties problem on extented ruby classes critical "properties indexer" (#112)
466
+
467
+ ## [0.4.0 / 2010-02-06]
468
+ - Performance improvements and Refactoring: Use and Extend Neo4j Java Classes (#97)
469
+ - Support for Index and Declaration of Properties on Relationships (#91)
470
+ - Upgrade to neo4j-1.0 rc (#100)
471
+ - All internal properties should be prefix with a '_',0.4.0 (#105)
472
+ - Generate relationship accessor methods for declared has_n and has_one relationships (#104)
473
+ - New way of creating relationship - Neo4j::Relationship.new (#103)
474
+ - Neo4j#init_node method should take one or more args (#98)
475
+ - Namespaced relationships: has_one...from using the wrong has_n...to(#92)
476
+ - Neo4j::NodeMixin and Neo4j::Node should allow a hash for initialization (#99)
477
+
478
+ ## [0.3.3 / 2009-11-25]
479
+ - Support for a counter property on has_lists (#75)
480
+ - Support for Cascade delete. On has_n, had_one and has_list (#81)
481
+ - NodeMixin#all should work with inheritance - Child classes should have a relationship of their own. (#64)
482
+ - Support for other lucene analyzer then StandardAnalyzer (#87)
483
+ - NodeMixin initialize should accept block like docs (#82)
484
+ - Add incoming relationship should work as expected: n1.relationships.incoming(:foo) << n2 (#80)
485
+ - Delete node from a has_list relationship should work as expected (#79)
486
+ - Improve stacktraces (#94)
487
+ - Removed sideeffect of rspecs (#90)
488
+ - Add debug method on NodeMixin to print it self (#88)
489
+ - Removed to_a method (#73)
490
+ - Upgrade to neo4j-1.0b10 (#95)
491
+ - Upgrade to lucene 2.9.0 (#83)
492
+ - Refactoring: RSpecs (#74)
493
+ - Refactoring: aggregate each, renamed to property aggregator (#72)
494
+ - BugFix: neo4j gem cannot be built from the source (#86)
495
+ - BugFix: Neo4j::relationship should not raise Exception if there are no relationships (#78)
496
+
497
+ ## [0.3.2 / 2009-09-17]
498
+ - Added support for aggregating nodes (#65)
499
+ - Wrapped Neo4j GraphAlgo AllSimplePath (#70)
500
+ - Added traversal with traversal position (#71)
501
+ - Removed DynamicAccessors mixin, replaced by [] operator (#67)
502
+ - Impl Neo4j.all_nodes (#69)
503
+ - Upgrated Neo4j jar file to 1.0-b9
504
+ - The Neo4j#relationship method now allows a filter parameter (#66)
505
+ - Neo4j.rb now can read database not created by Neo4j.rb - does not require classname property (#63)
506
+ - REST - added an "all" value for the depth traversal query parameter (#62)
507
+ - REST - Performance improvments using the Rest Mixin (#60)
508
+
509
+ ## [0.3.1 / 2009-07-25]
510
+ - Feature, extension - find path between given pair of nodes (#58)
511
+ - Fix a messy exception on GET /nodes/UnknownClassName (#57)
512
+ - Bug - exception on GET /nodes/classname/rel if rel is a has_one relationship (#56)
513
+ - Bug: GET /nodes/classname missing out nodes with no properties (#55)
514
+ - Bug: Lucene sorting caused exception if there were no documents (#54)
515
+ - Bug: reindexer fails to connect nodes to the IndexNode (#53)
516
+
517
+ ## [0.3.0 / 2009-06-25]
518
+ - Neo4j should track node changes
519
+ - RESTful support for lucene queries, sorting and paging
520
+ - RESTful support for Relationships
521
+ - RESTful support for Node and properties
522
+ - Experimental support for Master-Slave Replication via REST
523
+ - RESTful Node representation should contain hyperlinks to relationships
524
+ - Added some handy method like first and empty? on relationships
525
+ - Use new neo4j: neo-1.0-b8
526
+ - Add an event handler for create/delete nodes start/stop neo, update property/relationship
527
+ - The NodeMixin should behave like a hash, added [] and []= methods
528
+ - Support list topology - has_list and belongs_to_list Neo4j::NodeMixin Classmethods
529
+ - Should be possible to add relationships without declaring them (Neo4j#relationships.outgoing(:friends) << node)
530
+ - Neo4j extensions file structure, should be easy to create your own extensions
531
+ - Rename relation to relationship (Neo4j::Relations => Neo4j::Relationships, DynamicRelation => Relationship) [data incompatible change]
532
+ - Auto Transaction is now optional
533
+ - Setting Float properties fails under JRuby1.2.0
534
+ - Bug: Indexing relationships does not work
535
+ - Make the ReferenceNode include Neo4j::NodeMixin
536
+ - Added handy Neo4j class that simply includes the Neo4j::NodeMixin
537
+ - Neo4j::IndexNode now holds references to all nodes (Neo4j.ref_node -> Neo4j::IndexNode -> ...)
538
+
539
+
540
+ ## [0.2.1 / 2009-03-15]
541
+ - Refactoring of lucene indexing of the node space (28)
542
+ - Fixed bug on Neo4j::Nodemixin#property? (#22)
543
+
544
+
545
+ ## [0.2.0 / 2009-01-20]
546
+ - Impl. Neo4j::Node#traverse - enables traversal and filtering using TraversalPosition info (#17,#19)
547
+ - Impl. traversal to any depth (#15)
548
+ - Impl. traversal several relationships type at the same time (#16)
549
+ - Fixed a Lucene timezone bug (#20)
550
+ - Lots of refactoring of the neo4j.rb traversal code and RSpecs
551
+
552
+ ## [0.1.0 / 2008-12-18]
553
+ - Property can now be of any type (and not only String, Fixnum, Float)
554
+ - Indexing and Query with Date and DateTime
555
+ - YARD documentation
556
+ - Properties can be removed
557
+ - A property can be set to nil (it will then be removed).
558
+
559
+ ## [0.0.7 / 2008-12-10]
560
+ - Added method to_param and methods on the value object needed for Ruby on Rails
561
+ - Impl. update from a value object/hash for a node
562
+ - Impl. generation of value object classes/instances from a node.
563
+ - Refactoring the Transaction handling (reuse PlaceboTransaction instances if possible)
564
+ - Removed the need to start and stop neo. It will be done automatically when needed.
565
+
566
+
567
+ ## [0.0.6 / 2008-12-03]
568
+ - Removed the configuration from the Neo4j.start method. Now exist in Neo4j::Config and Lucene::Config.
569
+ - Implemented sort_by method.
570
+ - Lazy loading of search result. Execute the query and load the nodes only if needed.
571
+ - Added support to use lucene query language, example: Person.find("name:foo AND age:42")
572
+ - All test now uses RAM based lucene indexes.
573
+
574
+ ## [0.0.5 / 2008-11-17]
575
+ - Supports keeping lucene index in memory instead of on disk
576
+ - Added support for lucene full text search
577
+ - Fixed so neo4j runs on JRuby 1.1.5
578
+ - 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.
579
+ - Added ReferenceNode. All nodes now have a relationship from this reference node.
580
+ - Lots of refactoring
581
+ - Added the IMDB example. It shows how to create a neo database, lucene queries and node traversals.
582
+
583
+ ## [0.0.4 / 2008-10-23]
584
+ - First release to rubyforge