neo4j-core 9.0.0.alpha.1 → 9.0.0
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/Gemfile +11 -3
- data/lib/neo4j/core/cypher_session.rb +3 -0
- data/lib/neo4j/core/cypher_session/adaptors.rb +10 -0
- data/lib/neo4j/core/cypher_session/adaptors/bolt.rb +2 -25
- data/lib/neo4j/core/cypher_session/adaptors/driver.rb +107 -0
- data/lib/neo4j/core/cypher_session/adaptors/embedded.rb +4 -0
- data/lib/neo4j/core/cypher_session/adaptors/http.rb +4 -0
- data/lib/neo4j/core/cypher_session/adaptors/schema.rb +34 -0
- data/lib/neo4j/core/cypher_session/responses/driver.rb +71 -0
- data/lib/neo4j/core/cypher_session/transactions/driver.rb +55 -0
- data/lib/neo4j/core/version.rb +1 -1
- data/neo4j-core.gemspec +2 -2
- metadata +90 -44
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: be42b706dfc53db46a75cb36a1bcc8025d37f57a67a607f7567872e8eb475f8a
|
4
|
+
data.tar.gz: e800d2f9742a015fd82fa7c01b9b9ed23f7eb87276b211262a46c6583a323e09
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 2e64350cfe8254246c8ed994a2c8168e2fe9f4342c57d013d31f21c0a60a7ce708b3ba509000836bedc48dfbc8b4880b5d028a5118b69825b13d0d8fc7838716
|
7
|
+
data.tar.gz: a2a675a214fe7726213240f2fe8980328ea8c364f7d862b1be118d70a58f5e100ca7b28cdd0d5327e00ff8eb9b15ee20ffd503ca7d78c15147b5651a7ab4c436
|
data/Gemfile
CHANGED
@@ -8,7 +8,15 @@ gemspec
|
|
8
8
|
gem 'tins', '< 1.7' if RUBY_VERSION.to_f < 2.0
|
9
9
|
|
10
10
|
group 'development' do
|
11
|
-
|
11
|
+
if RUBY_PLATFORM =~ /java/
|
12
|
+
if ENV['USE_LOCAL_DRIVER']
|
13
|
+
gem 'neo4j-ruby-driver', path: '../neo4j-ruby-driver'
|
14
|
+
else
|
15
|
+
gem 'neo4j-ruby-driver'
|
16
|
+
end
|
17
|
+
else
|
18
|
+
gem 'guard-rspec', require: false
|
19
|
+
end
|
12
20
|
if RUBY_VERSION.to_f < 2.0
|
13
21
|
gem 'overcommit', '< 0.35.0'
|
14
22
|
gem 'term-ansicolor', '< 1.4'
|
@@ -18,10 +26,10 @@ group 'development' do
|
|
18
26
|
end
|
19
27
|
|
20
28
|
group 'test' do
|
21
|
-
gem 'activesupport'
|
29
|
+
gem 'activesupport'
|
22
30
|
gem 'coveralls', require: false
|
23
31
|
gem 'dotenv'
|
24
|
-
gem 'rspec'
|
32
|
+
gem 'rspec'
|
25
33
|
gem 'rspec-its'
|
26
34
|
gem 'simplecov-html', require: false
|
27
35
|
end
|
@@ -1,7 +1,10 @@
|
|
1
|
+
require 'active_support/core_ext/module/delegation'
|
2
|
+
|
1
3
|
module Neo4j
|
2
4
|
module Core
|
3
5
|
class CypherSession
|
4
6
|
attr_reader :adaptor
|
7
|
+
delegate :close, to: :adaptor
|
5
8
|
|
6
9
|
def initialize(adaptor)
|
7
10
|
fail ArgumentError, "Invalid adaptor: #{adaptor.inspect}" if !adaptor.is_a?(Adaptors::Base)
|
@@ -186,6 +186,16 @@ ERROR
|
|
186
186
|
("\n ↳ #{source_line}:#{line_number}" if payload[:adaptor].options[:verbose_query_logs] && source_line).to_s
|
187
187
|
end
|
188
188
|
|
189
|
+
def default_subscribe
|
190
|
+
subscribe_to_request
|
191
|
+
end
|
192
|
+
|
193
|
+
def close; end
|
194
|
+
|
195
|
+
def supports_metadata?
|
196
|
+
true
|
197
|
+
end
|
198
|
+
|
189
199
|
class << self
|
190
200
|
def transaction_class
|
191
201
|
fail '.transaction_class method not implemented on adaptor!'
|
@@ -1,5 +1,6 @@
|
|
1
1
|
require 'neo4j/core/cypher_session/adaptors'
|
2
2
|
require 'neo4j/core/cypher_session/adaptors/has_uri'
|
3
|
+
require 'neo4j/core/cypher_session/adaptors/schema'
|
3
4
|
require 'neo4j/core/cypher_session/adaptors/bolt/pack_stream'
|
4
5
|
require 'neo4j/core/cypher_session/adaptors/bolt/chunk_writer_io'
|
5
6
|
require 'neo4j/core/cypher_session/responses/bolt'
|
@@ -12,6 +13,7 @@ module Neo4j
|
|
12
13
|
module Adaptors
|
13
14
|
class Bolt < Base
|
14
15
|
include Adaptors::HasUri
|
16
|
+
include Adaptors::Schema
|
15
17
|
default_url('bolt://neo4:neo4j@localhost:7687')
|
16
18
|
validate_uri do |uri|
|
17
19
|
uri.scheme == 'bolt'
|
@@ -53,35 +55,10 @@ module Neo4j
|
|
53
55
|
end
|
54
56
|
end
|
55
57
|
|
56
|
-
def version(session)
|
57
|
-
result = query(session, 'CALL dbms.components()', {}, skip_instrumentation: true)
|
58
|
-
|
59
|
-
# BTW: community / enterprise could be retrieved via `result.first.edition`
|
60
|
-
result.first.versions[0]
|
61
|
-
end
|
62
|
-
|
63
58
|
def connected?
|
64
59
|
!!@tcp_client && !@tcp_client.closed?
|
65
60
|
end
|
66
61
|
|
67
|
-
def indexes(session)
|
68
|
-
result = query(session, 'CALL db.indexes()', {}, skip_instrumentation: true)
|
69
|
-
|
70
|
-
result.map do |row|
|
71
|
-
label, property = row.description.match(/INDEX ON :([^\(]+)\(([^\)]+)\)/)[1, 2]
|
72
|
-
{type: row.type.to_sym, label: label.to_sym, properties: [property.to_sym], state: row.state.to_sym}
|
73
|
-
end
|
74
|
-
end
|
75
|
-
|
76
|
-
def constraints(session)
|
77
|
-
result = query(session, 'CALL db.indexes()', {}, skip_instrumentation: true)
|
78
|
-
|
79
|
-
result.select { |row| row.type == 'node_unique_property' }.map do |row|
|
80
|
-
label, property = row.description.match(/INDEX ON :([^\(]+)\(([^\)]+)\)/)[1, 2]
|
81
|
-
{type: :uniqueness, label: label.to_sym, properties: [property.to_sym]}
|
82
|
-
end
|
83
|
-
end
|
84
|
-
|
85
62
|
def self.transaction_class
|
86
63
|
require 'neo4j/core/cypher_session/transactions/bolt'
|
87
64
|
Neo4j::Core::CypherSession::Transactions::Bolt
|
@@ -0,0 +1,107 @@
|
|
1
|
+
require 'neo4j/core/cypher_session/adaptors'
|
2
|
+
require 'neo4j/core/cypher_session/adaptors/has_uri'
|
3
|
+
require 'neo4j/core/cypher_session/adaptors/schema'
|
4
|
+
require 'neo4j/core/cypher_session/responses/driver'
|
5
|
+
require 'singleton'
|
6
|
+
|
7
|
+
module Neo4j
|
8
|
+
module Core
|
9
|
+
class CypherSession
|
10
|
+
module Adaptors
|
11
|
+
# The registry is necessary due to the specs constantly creating new CypherSessions.
|
12
|
+
# Closing a driver is costly. Not closing it prevents the process from termination.
|
13
|
+
# The registry allows reusage of drivers which are thread safe and conveniently closing them in one call.
|
14
|
+
class DriverRegistry < Hash
|
15
|
+
include Singleton
|
16
|
+
|
17
|
+
at_exit do
|
18
|
+
instance.close_all
|
19
|
+
end
|
20
|
+
|
21
|
+
def initialize
|
22
|
+
super
|
23
|
+
@mutex = Mutex.new
|
24
|
+
end
|
25
|
+
|
26
|
+
def driver_for(url)
|
27
|
+
uri = URI(url)
|
28
|
+
user = uri.user
|
29
|
+
password = uri.password
|
30
|
+
auth_token = if user
|
31
|
+
Neo4j::Driver::AuthTokens.basic(user, password)
|
32
|
+
else
|
33
|
+
Neo4j::Driver::AuthTokens.none
|
34
|
+
end
|
35
|
+
@mutex.synchronize { self[url] ||= Neo4j::Driver::GraphDatabase.driver(url, auth_token) }
|
36
|
+
end
|
37
|
+
|
38
|
+
def close(driver)
|
39
|
+
delete(key(driver))
|
40
|
+
driver.close
|
41
|
+
end
|
42
|
+
|
43
|
+
def close_all
|
44
|
+
values.each(&:close)
|
45
|
+
clear
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
class Driver < Base
|
50
|
+
include Adaptors::HasUri
|
51
|
+
include Adaptors::Schema
|
52
|
+
default_url('bolt://neo4:neo4j@localhost:7687')
|
53
|
+
validate_uri do |uri|
|
54
|
+
uri.scheme == 'bolt'
|
55
|
+
end
|
56
|
+
|
57
|
+
attr_reader :driver
|
58
|
+
alias connected? driver
|
59
|
+
|
60
|
+
def initialize(url, options = {})
|
61
|
+
self.url = url
|
62
|
+
@driver = DriverRegistry.instance.driver_for(url)
|
63
|
+
@options = options
|
64
|
+
end
|
65
|
+
|
66
|
+
def connect; end
|
67
|
+
|
68
|
+
def close
|
69
|
+
DriverRegistry.instance.close(driver)
|
70
|
+
end
|
71
|
+
|
72
|
+
def query_set(transaction, queries, options = {})
|
73
|
+
setup_queries!(queries, transaction, skip_instrumentation: options[:skip_instrumentation])
|
74
|
+
|
75
|
+
responses = queries.map do |query|
|
76
|
+
transaction.root_tx.run(query.cypher, query.parameters)
|
77
|
+
end
|
78
|
+
wrap_level = options[:wrap_level] || @options[:wrap_level]
|
79
|
+
Responses::Driver.new(responses, wrap_level: wrap_level).results
|
80
|
+
rescue Neo4j::Driver::Exceptions::Neo4jException => e
|
81
|
+
raise Neo4j::Core::CypherSession::CypherError.new_from(e.code, e.message) # , e.stack_track.to_a
|
82
|
+
end
|
83
|
+
|
84
|
+
# def transaction(_session, &block)
|
85
|
+
# session = driver.session(org.neo4j.driver.v1.AccessMode::WRITE)
|
86
|
+
# session.writeTransaction(&block)
|
87
|
+
# ensure
|
88
|
+
# session.close
|
89
|
+
# end
|
90
|
+
|
91
|
+
def self.transaction_class
|
92
|
+
require 'neo4j/core/cypher_session/transactions/driver'
|
93
|
+
Neo4j::Core::CypherSession::Transactions::Driver
|
94
|
+
end
|
95
|
+
|
96
|
+
instrument(:request, 'neo4j.core.bolt.request', %w[adaptor body]) do |_, start, finish, _id, payload|
|
97
|
+
ms = (finish - start) * 1000
|
98
|
+
adaptor = payload[:adaptor]
|
99
|
+
|
100
|
+
type = nil # adaptor.ssl? ? '+TLS' : ' UNSECURE'
|
101
|
+
" #{ANSI::BLUE}BOLT#{type}:#{ANSI::CLEAR} #{ANSI::YELLOW}#{ms.round}ms#{ANSI::CLEAR} #{adaptor.url_without_password}"
|
102
|
+
end
|
103
|
+
end
|
104
|
+
end
|
105
|
+
end
|
106
|
+
end
|
107
|
+
end
|
@@ -102,6 +102,10 @@ module Neo4j
|
|
102
102
|
!!@requestor
|
103
103
|
end
|
104
104
|
|
105
|
+
def supports_metadata?
|
106
|
+
Gem::Version.new(version(nil)) >= Gem::Version.new('2.1.5')
|
107
|
+
end
|
108
|
+
|
105
109
|
# Basic wrapper around HTTP requests to standard Neo4j HTTP endpoints
|
106
110
|
# - Takes care of JSONifying objects passed as body (Hash/Array/Query)
|
107
111
|
# - Sets headers, including user agent string
|
@@ -0,0 +1,34 @@
|
|
1
|
+
module Neo4j
|
2
|
+
module Core
|
3
|
+
class CypherSession
|
4
|
+
module Adaptors
|
5
|
+
module Schema
|
6
|
+
def version(session)
|
7
|
+
result = query(session, 'CALL dbms.components()', {}, skip_instrumentation: true)
|
8
|
+
|
9
|
+
# BTW: community / enterprise could be retrieved via `result.first.edition`
|
10
|
+
result.first.versions[0]
|
11
|
+
end
|
12
|
+
|
13
|
+
def indexes(session)
|
14
|
+
result = query(session, 'CALL db.indexes()', {}, skip_instrumentation: true)
|
15
|
+
|
16
|
+
result.map do |row|
|
17
|
+
label, property = row.description.match(/INDEX ON :([^\(]+)\(([^\)]+)\)/)[1, 2]
|
18
|
+
{type: row.type.to_sym, label: label.to_sym, properties: [property.to_sym], state: row.state.to_sym}
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
def constraints(session)
|
23
|
+
result = query(session, 'CALL db.indexes()', {}, skip_instrumentation: true)
|
24
|
+
|
25
|
+
result.select { |row| row.type == 'node_unique_property' }.map do |row|
|
26
|
+
label, property = row.description.match(/INDEX ON :([^\(]+)\(([^\)]+)\)/)[1, 2]
|
27
|
+
{type: :uniqueness, label: label.to_sym, properties: [property.to_sym]}
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
@@ -0,0 +1,71 @@
|
|
1
|
+
require 'neo4j/core/cypher_session/responses'
|
2
|
+
|
3
|
+
module Neo4j
|
4
|
+
module Core
|
5
|
+
class CypherSession
|
6
|
+
module Responses
|
7
|
+
class Driver < Base
|
8
|
+
attr_reader :results
|
9
|
+
|
10
|
+
def initialize(responses, options = {})
|
11
|
+
@wrap_level = options[:wrap_level] || Neo4j::Core::Config.wrapping_level
|
12
|
+
|
13
|
+
@results = responses.map(&method(:result_from_data))
|
14
|
+
end
|
15
|
+
|
16
|
+
def result_from_data(entities_data)
|
17
|
+
rows = entities_data.map do |entity_data|
|
18
|
+
wrap_value(entity_data.values)
|
19
|
+
end
|
20
|
+
|
21
|
+
Neo4j::Core::CypherSession::Result.new(entities_data.keys, rows)
|
22
|
+
end
|
23
|
+
|
24
|
+
def wrap_by_level(none_proc)
|
25
|
+
super(@wrap_level == :none ? none_proc.call : nil)
|
26
|
+
end
|
27
|
+
|
28
|
+
private
|
29
|
+
|
30
|
+
# In the future the ::Neo4j::Core::Node should either monkey patch or wrap Neo4j::Driver:Types::Node to avoid
|
31
|
+
# multiple object creation. This is probably best done once the other adapters (http, embedded) are removed.
|
32
|
+
def wrap_node(node)
|
33
|
+
wrap_by_level(-> { node.properties }) { ::Neo4j::Core::Node.new(node.id, node.labels, node.properties) }
|
34
|
+
end
|
35
|
+
|
36
|
+
def wrap_relationship(rel)
|
37
|
+
wrap_by_level(-> { rel.properties }) do
|
38
|
+
::Neo4j::Core::Relationship.new(rel.id, rel.type, rel.properties, rel.start_node_id, rel.end_node_id)
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
def wrap_path(path)
|
43
|
+
nodes = path.nodes
|
44
|
+
relationships = path.relationships
|
45
|
+
wrap_by_level(-> { nodes.zip(relationships).flatten.compact.map(&:properties) }) do
|
46
|
+
::Neo4j::Core::Path.new(nodes.map(&method(:wrap_node)),
|
47
|
+
relationships.map(&method(:wrap_relationship)),
|
48
|
+
nil) # remove directions from Path, looks like unused
|
49
|
+
end
|
50
|
+
end
|
51
|
+
|
52
|
+
def wrap_value(value)
|
53
|
+
if value.is_a? Array
|
54
|
+
value.map(&method(:wrap_value))
|
55
|
+
elsif value.is_a? Hash
|
56
|
+
value.map { |key, val| [key, wrap_value(val)] }.to_h
|
57
|
+
elsif value.is_a? Neo4j::Driver::Types::Node
|
58
|
+
wrap_node(value)
|
59
|
+
elsif value.is_a? Neo4j::Driver::Types::Relationship
|
60
|
+
wrap_relationship(value)
|
61
|
+
elsif value.is_a? Neo4j::Driver::Types::Path
|
62
|
+
wrap_path(value)
|
63
|
+
else
|
64
|
+
value
|
65
|
+
end
|
66
|
+
end
|
67
|
+
end
|
68
|
+
end
|
69
|
+
end
|
70
|
+
end
|
71
|
+
end
|
@@ -0,0 +1,55 @@
|
|
1
|
+
require 'neo4j/core/cypher_session/transactions'
|
2
|
+
|
3
|
+
module Neo4j
|
4
|
+
module Core
|
5
|
+
class CypherSession
|
6
|
+
module Transactions
|
7
|
+
class Driver < Base
|
8
|
+
attr_reader :driver_tx, :driver_session
|
9
|
+
|
10
|
+
def initialize(*args)
|
11
|
+
super
|
12
|
+
return unless root?
|
13
|
+
@driver_session = session.adaptor.driver.session(Neo4j::Driver::AccessMode::WRITE)
|
14
|
+
@driver_tx = @driver_session.begin_transaction
|
15
|
+
rescue StandardError => e
|
16
|
+
clean_transaction_registry
|
17
|
+
@driver_tx.close if @driver_tx
|
18
|
+
@driver_session.close if @driver_session
|
19
|
+
raise e
|
20
|
+
end
|
21
|
+
|
22
|
+
def commit
|
23
|
+
return unless root?
|
24
|
+
begin
|
25
|
+
@driver_tx.success
|
26
|
+
@driver_tx.close
|
27
|
+
ensure
|
28
|
+
@driver_session.close
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
def delete
|
33
|
+
root.driver_tx.failure
|
34
|
+
root.driver_tx.close
|
35
|
+
root.driver_session.close
|
36
|
+
end
|
37
|
+
|
38
|
+
def started?
|
39
|
+
true
|
40
|
+
end
|
41
|
+
|
42
|
+
def root_tx
|
43
|
+
root.driver_tx
|
44
|
+
end
|
45
|
+
|
46
|
+
private
|
47
|
+
|
48
|
+
def clean_transaction_registry
|
49
|
+
Neo4j::Transaction::TransactionsRegistry.transactions_by_session_id[session.object_id] = []
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
55
|
+
end
|
data/lib/neo4j/core/version.rb
CHANGED
data/neo4j-core.gemspec
CHANGED
@@ -30,7 +30,6 @@ DESCRIPTION
|
|
30
30
|
'bug_tracker_uri' => 'https://github.com/neo4jrb/neo4j-core/issues'
|
31
31
|
}
|
32
32
|
|
33
|
-
|
34
33
|
s.add_dependency('activesupport', '>= 4.0')
|
35
34
|
s.add_dependency('faraday', '>= 0.9.0')
|
36
35
|
s.add_dependency('faraday_middleware', '>= 0.10.0')
|
@@ -47,8 +46,9 @@ DESCRIPTION
|
|
47
46
|
s.add_development_dependency('simplecov')
|
48
47
|
s.add_development_dependency('yard')
|
49
48
|
|
50
|
-
if RUBY_PLATFORM
|
49
|
+
if RUBY_PLATFORM =~ /java/
|
51
50
|
s.add_development_dependency('neo4j-community', '>= 2.1.1')
|
51
|
+
s.add_development_dependency('neo4j-ruby-driver', '1.7.1.beta1')
|
52
52
|
s.add_development_dependency 'ruby-debug'
|
53
53
|
end
|
54
54
|
|
metadata
CHANGED
@@ -1,255 +1,297 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: neo4j-core
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 9.0.0
|
4
|
+
version: 9.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Andreas Ronge, Chris Grigg, Brian Underwood
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-
|
11
|
+
date: 2018-12-20 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
|
-
name: activesupport
|
15
14
|
requirement: !ruby/object:Gem::Requirement
|
16
15
|
requirements:
|
17
16
|
- - ">="
|
18
17
|
- !ruby/object:Gem::Version
|
19
18
|
version: '4.0'
|
20
|
-
|
19
|
+
name: activesupport
|
21
20
|
prerelease: false
|
21
|
+
type: :runtime
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - ">="
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: '4.0'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
|
-
name: faraday
|
29
28
|
requirement: !ruby/object:Gem::Requirement
|
30
29
|
requirements:
|
31
30
|
- - ">="
|
32
31
|
- !ruby/object:Gem::Version
|
33
32
|
version: 0.9.0
|
34
|
-
|
33
|
+
name: faraday
|
35
34
|
prerelease: false
|
35
|
+
type: :runtime
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
38
|
- - ">="
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: 0.9.0
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
|
-
name: faraday_middleware
|
43
42
|
requirement: !ruby/object:Gem::Requirement
|
44
43
|
requirements:
|
45
44
|
- - ">="
|
46
45
|
- !ruby/object:Gem::Version
|
47
46
|
version: 0.10.0
|
48
|
-
|
47
|
+
name: faraday_middleware
|
49
48
|
prerelease: false
|
49
|
+
type: :runtime
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
52
|
- - ">="
|
53
53
|
- !ruby/object:Gem::Version
|
54
54
|
version: 0.10.0
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
|
-
name: faraday_middleware-multi_json
|
57
56
|
requirement: !ruby/object:Gem::Requirement
|
58
57
|
requirements:
|
59
58
|
- - ">="
|
60
59
|
- !ruby/object:Gem::Version
|
61
60
|
version: '0'
|
62
|
-
|
61
|
+
name: faraday_middleware-multi_json
|
63
62
|
prerelease: false
|
63
|
+
type: :runtime
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
65
65
|
requirements:
|
66
66
|
- - ">="
|
67
67
|
- !ruby/object:Gem::Version
|
68
68
|
version: '0'
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
|
-
name: httpclient
|
71
70
|
requirement: !ruby/object:Gem::Requirement
|
72
71
|
requirements:
|
73
72
|
- - ">="
|
74
73
|
- !ruby/object:Gem::Version
|
75
74
|
version: '0'
|
76
|
-
|
75
|
+
name: httpclient
|
77
76
|
prerelease: false
|
77
|
+
type: :runtime
|
78
78
|
version_requirements: !ruby/object:Gem::Requirement
|
79
79
|
requirements:
|
80
80
|
- - ">="
|
81
81
|
- !ruby/object:Gem::Version
|
82
82
|
version: '0'
|
83
83
|
- !ruby/object:Gem::Dependency
|
84
|
-
name: json
|
85
84
|
requirement: !ruby/object:Gem::Requirement
|
86
85
|
requirements:
|
87
86
|
- - ">="
|
88
87
|
- !ruby/object:Gem::Version
|
89
88
|
version: '0'
|
90
|
-
|
89
|
+
name: json
|
91
90
|
prerelease: false
|
91
|
+
type: :runtime
|
92
92
|
version_requirements: !ruby/object:Gem::Requirement
|
93
93
|
requirements:
|
94
94
|
- - ">="
|
95
95
|
- !ruby/object:Gem::Version
|
96
96
|
version: '0'
|
97
97
|
- !ruby/object:Gem::Dependency
|
98
|
-
name: multi_json
|
99
98
|
requirement: !ruby/object:Gem::Requirement
|
100
99
|
requirements:
|
101
100
|
- - ">="
|
102
101
|
- !ruby/object:Gem::Version
|
103
102
|
version: '0'
|
104
|
-
|
103
|
+
name: multi_json
|
105
104
|
prerelease: false
|
105
|
+
type: :runtime
|
106
106
|
version_requirements: !ruby/object:Gem::Requirement
|
107
107
|
requirements:
|
108
108
|
- - ">="
|
109
109
|
- !ruby/object:Gem::Version
|
110
110
|
version: '0'
|
111
111
|
- !ruby/object:Gem::Dependency
|
112
|
-
name: net_tcp_client
|
113
112
|
requirement: !ruby/object:Gem::Requirement
|
114
113
|
requirements:
|
115
114
|
- - ">="
|
116
115
|
- !ruby/object:Gem::Version
|
117
116
|
version: 2.0.1
|
118
|
-
|
117
|
+
name: net_tcp_client
|
119
118
|
prerelease: false
|
119
|
+
type: :runtime
|
120
120
|
version_requirements: !ruby/object:Gem::Requirement
|
121
121
|
requirements:
|
122
122
|
- - ">="
|
123
123
|
- !ruby/object:Gem::Version
|
124
124
|
version: 2.0.1
|
125
125
|
- !ruby/object:Gem::Dependency
|
126
|
-
name: typhoeus
|
127
126
|
requirement: !ruby/object:Gem::Requirement
|
128
127
|
requirements:
|
129
128
|
- - ">="
|
130
129
|
- !ruby/object:Gem::Version
|
131
130
|
version: 1.1.2
|
132
|
-
|
131
|
+
name: typhoeus
|
133
132
|
prerelease: false
|
133
|
+
type: :runtime
|
134
134
|
version_requirements: !ruby/object:Gem::Requirement
|
135
135
|
requirements:
|
136
136
|
- - ">="
|
137
137
|
- !ruby/object:Gem::Version
|
138
138
|
version: 1.1.2
|
139
139
|
- !ruby/object:Gem::Dependency
|
140
|
-
name: dryspec
|
141
140
|
requirement: !ruby/object:Gem::Requirement
|
142
141
|
requirements:
|
143
142
|
- - ">="
|
144
143
|
- !ruby/object:Gem::Version
|
145
144
|
version: '0'
|
146
|
-
|
145
|
+
name: dryspec
|
147
146
|
prerelease: false
|
147
|
+
type: :development
|
148
148
|
version_requirements: !ruby/object:Gem::Requirement
|
149
149
|
requirements:
|
150
150
|
- - ">="
|
151
151
|
- !ruby/object:Gem::Version
|
152
152
|
version: '0'
|
153
153
|
- !ruby/object:Gem::Dependency
|
154
|
-
name: neo4j-rake_tasks
|
155
154
|
requirement: !ruby/object:Gem::Requirement
|
156
155
|
requirements:
|
157
156
|
- - ">="
|
158
157
|
- !ruby/object:Gem::Version
|
159
158
|
version: 0.3.0
|
160
|
-
|
159
|
+
name: neo4j-rake_tasks
|
161
160
|
prerelease: false
|
161
|
+
type: :development
|
162
162
|
version_requirements: !ruby/object:Gem::Requirement
|
163
163
|
requirements:
|
164
164
|
- - ">="
|
165
165
|
- !ruby/object:Gem::Version
|
166
166
|
version: 0.3.0
|
167
167
|
- !ruby/object:Gem::Dependency
|
168
|
-
name: pry
|
169
168
|
requirement: !ruby/object:Gem::Requirement
|
170
169
|
requirements:
|
171
170
|
- - ">="
|
172
171
|
- !ruby/object:Gem::Version
|
173
172
|
version: '0'
|
174
|
-
|
173
|
+
name: pry
|
175
174
|
prerelease: false
|
175
|
+
type: :development
|
176
176
|
version_requirements: !ruby/object:Gem::Requirement
|
177
177
|
requirements:
|
178
178
|
- - ">="
|
179
179
|
- !ruby/object:Gem::Version
|
180
180
|
version: '0'
|
181
181
|
- !ruby/object:Gem::Dependency
|
182
|
-
name: simplecov
|
183
182
|
requirement: !ruby/object:Gem::Requirement
|
184
183
|
requirements:
|
185
184
|
- - ">="
|
186
185
|
- !ruby/object:Gem::Version
|
187
186
|
version: '0'
|
188
|
-
|
187
|
+
name: simplecov
|
189
188
|
prerelease: false
|
189
|
+
type: :development
|
190
190
|
version_requirements: !ruby/object:Gem::Requirement
|
191
191
|
requirements:
|
192
192
|
- - ">="
|
193
193
|
- !ruby/object:Gem::Version
|
194
194
|
version: '0'
|
195
195
|
- !ruby/object:Gem::Dependency
|
196
|
-
name: yard
|
197
196
|
requirement: !ruby/object:Gem::Requirement
|
198
197
|
requirements:
|
199
198
|
- - ">="
|
200
199
|
- !ruby/object:Gem::Version
|
201
200
|
version: '0'
|
202
|
-
|
201
|
+
name: yard
|
203
202
|
prerelease: false
|
203
|
+
type: :development
|
204
204
|
version_requirements: !ruby/object:Gem::Requirement
|
205
205
|
requirements:
|
206
206
|
- - ">="
|
207
207
|
- !ruby/object:Gem::Version
|
208
208
|
version: '0'
|
209
209
|
- !ruby/object:Gem::Dependency
|
210
|
-
name: guard
|
211
210
|
requirement: !ruby/object:Gem::Requirement
|
212
211
|
requirements:
|
213
212
|
- - ">="
|
214
213
|
- !ruby/object:Gem::Version
|
215
|
-
version:
|
214
|
+
version: 2.1.1
|
215
|
+
name: neo4j-community
|
216
|
+
prerelease: false
|
216
217
|
type: :development
|
218
|
+
version_requirements: !ruby/object:Gem::Requirement
|
219
|
+
requirements:
|
220
|
+
- - ">="
|
221
|
+
- !ruby/object:Gem::Version
|
222
|
+
version: 2.1.1
|
223
|
+
- !ruby/object:Gem::Dependency
|
224
|
+
requirement: !ruby/object:Gem::Requirement
|
225
|
+
requirements:
|
226
|
+
- - '='
|
227
|
+
- !ruby/object:Gem::Version
|
228
|
+
version: 1.7.1.beta1
|
229
|
+
name: neo4j-ruby-driver
|
230
|
+
prerelease: false
|
231
|
+
type: :development
|
232
|
+
version_requirements: !ruby/object:Gem::Requirement
|
233
|
+
requirements:
|
234
|
+
- - '='
|
235
|
+
- !ruby/object:Gem::Version
|
236
|
+
version: 1.7.1.beta1
|
237
|
+
- !ruby/object:Gem::Dependency
|
238
|
+
requirement: !ruby/object:Gem::Requirement
|
239
|
+
requirements:
|
240
|
+
- - ">="
|
241
|
+
- !ruby/object:Gem::Version
|
242
|
+
version: '0'
|
243
|
+
name: ruby-debug
|
217
244
|
prerelease: false
|
245
|
+
type: :development
|
218
246
|
version_requirements: !ruby/object:Gem::Requirement
|
219
247
|
requirements:
|
220
248
|
- - ">="
|
221
249
|
- !ruby/object:Gem::Version
|
222
250
|
version: '0'
|
223
251
|
- !ruby/object:Gem::Dependency
|
224
|
-
name: guard-rubocop
|
225
252
|
requirement: !ruby/object:Gem::Requirement
|
226
253
|
requirements:
|
227
254
|
- - ">="
|
228
255
|
- !ruby/object:Gem::Version
|
229
256
|
version: '0'
|
257
|
+
name: guard
|
258
|
+
prerelease: false
|
230
259
|
type: :development
|
260
|
+
version_requirements: !ruby/object:Gem::Requirement
|
261
|
+
requirements:
|
262
|
+
- - ">="
|
263
|
+
- !ruby/object:Gem::Version
|
264
|
+
version: '0'
|
265
|
+
- !ruby/object:Gem::Dependency
|
266
|
+
requirement: !ruby/object:Gem::Requirement
|
267
|
+
requirements:
|
268
|
+
- - ">="
|
269
|
+
- !ruby/object:Gem::Version
|
270
|
+
version: '0'
|
271
|
+
name: guard-rubocop
|
231
272
|
prerelease: false
|
273
|
+
type: :development
|
232
274
|
version_requirements: !ruby/object:Gem::Requirement
|
233
275
|
requirements:
|
234
276
|
- - ">="
|
235
277
|
- !ruby/object:Gem::Version
|
236
278
|
version: '0'
|
237
279
|
- !ruby/object:Gem::Dependency
|
238
|
-
name: rubocop
|
239
280
|
requirement: !ruby/object:Gem::Requirement
|
240
281
|
requirements:
|
241
282
|
- - "~>"
|
242
283
|
- !ruby/object:Gem::Version
|
243
284
|
version: 0.56.0
|
244
|
-
|
285
|
+
name: rubocop
|
245
286
|
prerelease: false
|
287
|
+
type: :development
|
246
288
|
version_requirements: !ruby/object:Gem::Requirement
|
247
289
|
requirements:
|
248
290
|
- - "~>"
|
249
291
|
- !ruby/object:Gem::Version
|
250
292
|
version: 0.56.0
|
251
|
-
description: " Neo4j-core provides classes and methods to work with the graph database
|
252
|
-
Neo4j.\n"
|
293
|
+
description: " Neo4j-core provides classes and methods to work with the graph database\
|
294
|
+
\ Neo4j.\n"
|
253
295
|
email: andreas.ronge@gmail.com, chris@subvertallmedia.com, brian@brian-underwood.codes
|
254
296
|
executables: []
|
255
297
|
extensions: []
|
@@ -268,16 +310,20 @@ files:
|
|
268
310
|
- lib/neo4j/core/cypher_session/adaptors/bolt.rb
|
269
311
|
- lib/neo4j/core/cypher_session/adaptors/bolt/chunk_writer_io.rb
|
270
312
|
- lib/neo4j/core/cypher_session/adaptors/bolt/pack_stream.rb
|
313
|
+
- lib/neo4j/core/cypher_session/adaptors/driver.rb
|
271
314
|
- lib/neo4j/core/cypher_session/adaptors/embedded.rb
|
272
315
|
- lib/neo4j/core/cypher_session/adaptors/has_uri.rb
|
273
316
|
- lib/neo4j/core/cypher_session/adaptors/http.rb
|
317
|
+
- lib/neo4j/core/cypher_session/adaptors/schema.rb
|
274
318
|
- lib/neo4j/core/cypher_session/responses.rb
|
275
319
|
- lib/neo4j/core/cypher_session/responses/bolt.rb
|
320
|
+
- lib/neo4j/core/cypher_session/responses/driver.rb
|
276
321
|
- lib/neo4j/core/cypher_session/responses/embedded.rb
|
277
322
|
- lib/neo4j/core/cypher_session/responses/http.rb
|
278
323
|
- lib/neo4j/core/cypher_session/result.rb
|
279
324
|
- lib/neo4j/core/cypher_session/transactions.rb
|
280
325
|
- lib/neo4j/core/cypher_session/transactions/bolt.rb
|
326
|
+
- lib/neo4j/core/cypher_session/transactions/driver.rb
|
281
327
|
- lib/neo4j/core/cypher_session/transactions/embedded.rb
|
282
328
|
- lib/neo4j/core/cypher_session/transactions/http.rb
|
283
329
|
- lib/neo4j/core/helpers.rb
|
@@ -303,7 +349,7 @@ metadata:
|
|
303
349
|
changelog_uri: https://github.com/neo4jrb/neo4j-core/blob/master/CHANGELOG.md
|
304
350
|
source_code_uri: https://github.com/neo4jrb/neo4j-core/
|
305
351
|
bug_tracker_uri: https://github.com/neo4jrb/neo4j-core/issues
|
306
|
-
post_install_message:
|
352
|
+
post_install_message:
|
307
353
|
rdoc_options:
|
308
354
|
- "--quiet"
|
309
355
|
- "--title"
|
@@ -321,13 +367,13 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
321
367
|
version: 2.1.0
|
322
368
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
323
369
|
requirements:
|
324
|
-
- - "
|
370
|
+
- - ">="
|
325
371
|
- !ruby/object:Gem::Version
|
326
|
-
version:
|
372
|
+
version: '0'
|
327
373
|
requirements: []
|
328
|
-
rubyforge_project:
|
329
|
-
rubygems_version: 2.7.
|
330
|
-
signing_key:
|
374
|
+
rubyforge_project:
|
375
|
+
rubygems_version: 2.7.6
|
376
|
+
signing_key:
|
331
377
|
specification_version: 4
|
332
378
|
summary: A basic library to work with the graph database Neo4j.
|
333
379
|
test_files: []
|