neo4j 6.0.0.alpha.5 → 6.0.0.alpha.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +22 -0
- data/lib/neo4j/active_node/has_n.rb +12 -10
- data/lib/neo4j/active_node/id_property.rb +0 -2
- data/lib/neo4j/active_node/query/query_proxy_enumerable.rb +3 -4
- data/lib/neo4j/active_node/query/query_proxy_methods.rb +4 -13
- data/lib/neo4j/railtie.rb +22 -2
- data/lib/neo4j/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b0ca6a12d1708b86d03c1c5932a4f251e365c005
|
4
|
+
data.tar.gz: 26bc7938b51f0c998ab7065df9db84cccf60a9dc
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 75f1ec8c3a3c26a6047d0257da2652f0e51c4b198cffeff15bd847797cd5a94928788e5010f9c57a3a81693628b5ec7ac0e4fa16190b9d8b58b39b2b61e2e6c5
|
7
|
+
data.tar.gz: ba64cd70f047f933e47a0aed2d9daa4b1b39876589fe432537c20c85bdf6f13fdd74e14794d53a9304aaf5a44df573dac7e9933455ccccb28204f9fae4b73330
|
data/CHANGELOG.md
CHANGED
@@ -3,12 +3,29 @@ All notable changes to this project will be documented in this file.
|
|
3
3
|
This file should follow the standards specified on [http://keepachangelog.com/]
|
4
4
|
This project adheres to [Semantic Versioning](http://semver.org/).
|
5
5
|
|
6
|
+
## [6.0.0.alpha.7] - 10-19-2015
|
7
|
+
|
8
|
+
- Remove uniqueness validation for `id_property` because we already have Neo4j constraints
|
9
|
+
- Support `config/neo4j.ya?ml`
|
10
|
+
|
11
|
+
## [6.0.0.alpha.6] - 10-18-2015
|
12
|
+
|
13
|
+
### Changed
|
14
|
+
|
15
|
+
- Improved eager loading when no with_associations is specified (see #905)
|
16
|
+
|
6
17
|
## [6.0.0.alpha.5] - 10-18-2015
|
7
18
|
|
8
19
|
### Changed
|
9
20
|
|
10
21
|
- Change size and length so that they match expected Ruby / ActiveRecord behavior (see http://stackoverflow.com/questions/6083219/activerecord-size-vs-count and #875)
|
11
22
|
|
23
|
+
## [6.0.0.alpha.4] - 10-17-2015
|
24
|
+
|
25
|
+
### Fixed
|
26
|
+
|
27
|
+
- `QueryProxy` was not converting Boolean properties correctly
|
28
|
+
|
12
29
|
## [6.0.0.alpha.3] - 10-14-2015
|
13
30
|
|
14
31
|
### Removed
|
@@ -46,6 +63,11 @@ This project adheres to [Semantic Versioning](http://semver.org/).
|
|
46
63
|
- Certain actions that were intended as once-in-the-app's-lifetime events, notably schema operations, will only occur immediately upon the first session's establishment.
|
47
64
|
- Context now set for Model.all QueryProxy so that logs can reflect that it wasn't just a raw Cypher query
|
48
65
|
|
66
|
+
## [5.2.11] - 10-18-2015
|
67
|
+
|
68
|
+
### Fixed
|
69
|
+
- Unable to give additional options as first argument to chained QueryProxy method
|
70
|
+
|
49
71
|
## [5.2.10] - 10-14-2015
|
50
72
|
|
51
73
|
### Fixed
|
@@ -158,7 +158,7 @@ module Neo4j::ActiveNode
|
|
158
158
|
name = name.to_sym
|
159
159
|
hash = association_proxy_hash(name, options)
|
160
160
|
association_proxy_cache_fetch(hash) do
|
161
|
-
if result_cache = self.instance_variable_get('@
|
161
|
+
if result_cache = self.instance_variable_get('@source_proxy_result_cache')
|
162
162
|
result_by_previous_id = previous_proxy_results_by_previous_id(result_cache, name)
|
163
163
|
|
164
164
|
result_cache.inject(nil) do |proxy_to_return, object|
|
@@ -184,7 +184,11 @@ module Neo4j::ActiveNode
|
|
184
184
|
query_proxy = self.class.as(:previous).where(neo_id: result_cache.map(&:neo_id))
|
185
185
|
query_proxy = self.class.send(:association_query_proxy, association_name, previous_query_proxy: query_proxy, node: :next, optional: true)
|
186
186
|
|
187
|
-
Hash[*query_proxy.pluck('ID(previous)', 'collect(next)').flatten(1)]
|
187
|
+
Hash[*query_proxy.pluck('ID(previous)', 'collect(next)').flatten(1)].each do |_, records|
|
188
|
+
records.each do |record|
|
189
|
+
record.instance_variable_set('@source_proxy_result_cache', records)
|
190
|
+
end
|
191
|
+
end
|
188
192
|
end
|
189
193
|
|
190
194
|
module ClassMethods
|
@@ -332,10 +336,7 @@ module Neo4j::ActiveNode
|
|
332
336
|
define_method(name) do |node = nil, rel = nil, options = {}|
|
333
337
|
# return [].freeze unless self._persisted_obj
|
334
338
|
|
335
|
-
if node.is_a?(Hash)
|
336
|
-
options = node
|
337
|
-
node = nil
|
338
|
-
end
|
339
|
+
options, node = node, nil if node.is_a?(Hash)
|
339
340
|
|
340
341
|
association_proxy(name, {node: node, rel: rel, source_object: self, labels: options[:labels]}.merge!(options))
|
341
342
|
end
|
@@ -345,6 +346,8 @@ module Neo4j::ActiveNode
|
|
345
346
|
define_has_many_id_methods(name)
|
346
347
|
|
347
348
|
define_class_method(name) do |node = nil, rel = nil, options = {}|
|
349
|
+
options, node = node, nil if node.is_a?(Hash)
|
350
|
+
|
348
351
|
association_proxy(name, {node: node, rel: rel, labels: options[:labels]}.merge!(options))
|
349
352
|
end
|
350
353
|
end
|
@@ -383,6 +386,8 @@ module Neo4j::ActiveNode
|
|
383
386
|
define_has_one_id_methods(name)
|
384
387
|
|
385
388
|
define_class_method(name) do |node = nil, rel = nil, options = {}|
|
389
|
+
options, node = node, nil if node.is_a?(Hash)
|
390
|
+
|
386
391
|
association_proxy(name, {node: node, rel: rel, labels: options[:labels]}.merge!(options))
|
387
392
|
end
|
388
393
|
end
|
@@ -403,10 +408,7 @@ module Neo4j::ActiveNode
|
|
403
408
|
|
404
409
|
def define_has_one_getter(name)
|
405
410
|
define_method(name) do |node = nil, rel = nil, options = {}|
|
406
|
-
if node.is_a?(Hash)
|
407
|
-
options = node
|
408
|
-
node = nil
|
409
|
-
end
|
411
|
+
options, node = node, nil if node.is_a?(Hash)
|
410
412
|
|
411
413
|
# Return all results if a variable-length relationship length was given
|
412
414
|
association_proxy = association_proxy(name, {node: node, rel: rel}.merge!(options))
|
@@ -14,9 +14,8 @@ module Neo4j
|
|
14
14
|
end
|
15
15
|
|
16
16
|
def result(node = true, rel = nil)
|
17
|
-
puts '@result_cache', @result_cache.inspect
|
18
17
|
@result_cache ||= {}
|
19
|
-
return result_cache_for(node, rel) if
|
18
|
+
return result_cache_for(node, rel) if result_cache?(node, rel)
|
20
19
|
|
21
20
|
pluck_vars = []
|
22
21
|
pluck_vars << identity if node
|
@@ -26,13 +25,13 @@ module Neo4j
|
|
26
25
|
|
27
26
|
result.each do |object|
|
28
27
|
object.instance_variable_set('@source_query_proxy', self)
|
29
|
-
object.instance_variable_set('@
|
28
|
+
object.instance_variable_set('@source_proxy_result_cache', result)
|
30
29
|
end
|
31
30
|
|
32
31
|
@result_cache[[node, rel]] ||= result
|
33
32
|
end
|
34
33
|
|
35
|
-
def
|
34
|
+
def result_cache?(node = true, rel = nil)
|
36
35
|
!!result_cache_for(node, rel)
|
37
36
|
end
|
38
37
|
|
@@ -64,17 +64,10 @@ module Neo4j
|
|
64
64
|
end
|
65
65
|
|
66
66
|
def size
|
67
|
-
|
68
|
-
if has_result_cache?
|
69
|
-
result_cache_for.length
|
70
|
-
else
|
71
|
-
count
|
72
|
-
end
|
67
|
+
result_cache? ? result_cache_for.length : count
|
73
68
|
end
|
74
69
|
|
75
|
-
|
76
|
-
to_a.length
|
77
|
-
end
|
70
|
+
delegate :length, to: :to_a
|
78
71
|
|
79
72
|
# TODO: update this with public API methods if/when they are exposed
|
80
73
|
def limit_value
|
@@ -250,10 +243,8 @@ module Neo4j
|
|
250
243
|
|
251
244
|
def exists_query_start(condition, target)
|
252
245
|
case condition
|
253
|
-
when Integer
|
254
|
-
|
255
|
-
when Hash
|
256
|
-
self.where(condition.keys.first => condition.values.first)
|
246
|
+
when Integer then self.where("ID(#{target}) = {exists_condition}").params(exists_condition: condition)
|
247
|
+
when Hash then self.where(condition.keys.first => condition.values.first)
|
257
248
|
else
|
258
249
|
self
|
259
250
|
end
|
data/lib/neo4j/railtie.rb
CHANGED
@@ -40,12 +40,32 @@ module Neo4j
|
|
40
40
|
cfg.sessions ||= []
|
41
41
|
end
|
42
42
|
|
43
|
+
def config_data
|
44
|
+
@config_data ||= if yaml_path
|
45
|
+
HashWithIndifferentAccess.new(YAML.load(yaml_path.read)[Rails.env])
|
46
|
+
else
|
47
|
+
{}
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
def yaml_path
|
52
|
+
@yaml_path ||= %w(config/neo4j.yml config/neo4j.yaml).map do |path|
|
53
|
+
Rails.root.join(path)
|
54
|
+
end.detect(&:exist?)
|
55
|
+
end
|
56
|
+
|
43
57
|
def default_session_type
|
44
|
-
ENV['NEO4J_PATH']
|
58
|
+
if ENV['NEO4J_PATH']
|
59
|
+
:embedded_db
|
60
|
+
else
|
61
|
+
config_data[:type] || :server_db
|
62
|
+
end.to_sym
|
45
63
|
end
|
46
64
|
|
47
65
|
def default_session_path
|
48
|
-
ENV['NEO4J_URL'] || ENV['NEO4J_PATH'] ||
|
66
|
+
ENV['NEO4J_URL'] || ENV['NEO4J_PATH'] ||
|
67
|
+
config_data[:url] || config_data[:path] ||
|
68
|
+
'http://localhost:7474'
|
49
69
|
end
|
50
70
|
|
51
71
|
def start_embedded_session(session)
|
data/lib/neo4j/version.rb
CHANGED
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: 6.0.0.alpha.
|
4
|
+
version: 6.0.0.alpha.7
|
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-10-
|
11
|
+
date: 2015-10-19 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: orm_adapter
|