neo4j-core 9.0.0.alpha.1 → 9.0.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 95c3a0a71e52de4f4ef573cc36ff3d206a1fcd3ba443a84890e3c42c6ca6cc39
4
- data.tar.gz: '05885ecf4289f9fae5d67234f82324c24289e4ab0a1fff8ffc6569810e71a496'
3
+ metadata.gz: be42b706dfc53db46a75cb36a1bcc8025d37f57a67a607f7567872e8eb475f8a
4
+ data.tar.gz: e800d2f9742a015fd82fa7c01b9b9ed23f7eb87276b211262a46c6583a323e09
5
5
  SHA512:
6
- metadata.gz: ab2abc2fa87addc1ef0b2ebb0e3e67886d773d0542bf3a2850f17adc39c27e9faae92a0f528b8e8785de28bced39cbd19d5a264ee27f1584f1f34ccd21383049
7
- data.tar.gz: 686135288df838098db8b40ede27157bc02d335eef6b041b18ee4c7f24a2f0f28bdc98f1d5ada1a15e864e9e24d7caf1acb8aae2003b44696041b9c9ad44d8c9
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
- gem 'guard-rspec', require: false if RUBY_PLATFORM != 'java'
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', '~> 4.0'
29
+ gem 'activesupport'
22
30
  gem 'coveralls', require: false
23
31
  gem 'dotenv'
24
- gem 'rspec', '~> 3.0'
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
@@ -91,6 +91,10 @@ module Neo4j
91
91
  " #{ANSI::BLUE}EMBEDDED CYPHER TRANSACTION:#{ANSI::CLEAR} #{ANSI::YELLOW}#{ms.round}ms#{ANSI::CLEAR}"
92
92
  end
93
93
 
94
+ def default_subscribe
95
+ subscribe_to_transaction
96
+ end
97
+
94
98
  private
95
99
 
96
100
  def execution_results(queries)
@@ -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
@@ -1,5 +1,5 @@
1
1
  module Neo4j
2
2
  module Core
3
- VERSION = '9.0.0.alpha.1'
3
+ VERSION = '9.0.0'
4
4
  end
5
5
  end
@@ -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 == 'java'
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.alpha.1
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-10-28 00:00:00.000000000 Z
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
- type: :runtime
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
- type: :runtime
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
- type: :runtime
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
- type: :runtime
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
- type: :runtime
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
- type: :runtime
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
- type: :runtime
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
- type: :runtime
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
- type: :runtime
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
- type: :development
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
- type: :development
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
- type: :development
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
- type: :development
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
- type: :development
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: '0'
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
- type: :development
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: 1.3.1
372
+ version: '0'
327
373
  requirements: []
328
- rubyforge_project:
329
- rubygems_version: 2.7.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: []