neo4j 9.6.2 → 10.0.0.pre.alpha.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (47) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +0 -13
  3. data/CONTRIBUTORS +4 -0
  4. data/Gemfile +2 -33
  5. data/lib/neo4j.rb +6 -2
  6. data/lib/neo4j/active_base.rb +19 -22
  7. data/lib/neo4j/active_node/has_n.rb +1 -1
  8. data/lib/neo4j/active_node/labels.rb +1 -11
  9. data/lib/neo4j/active_node/node_wrapper.rb +1 -1
  10. data/lib/neo4j/active_node/query/query_proxy_methods_of_mass_updating.rb +1 -1
  11. data/lib/neo4j/active_rel/rel_wrapper.rb +2 -2
  12. data/lib/neo4j/ansi.rb +14 -0
  13. data/lib/neo4j/core.rb +14 -0
  14. data/lib/neo4j/core/connection_failed_error.rb +6 -0
  15. data/lib/neo4j/core/cypher_error.rb +37 -0
  16. data/lib/neo4j/core/driver.rb +83 -0
  17. data/lib/neo4j/core/has_uri.rb +63 -0
  18. data/lib/neo4j/core/instrumentable.rb +36 -0
  19. data/lib/neo4j/core/label.rb +158 -0
  20. data/lib/neo4j/core/logging.rb +44 -0
  21. data/lib/neo4j/core/node.rb +23 -0
  22. data/lib/neo4j/core/querable.rb +88 -0
  23. data/lib/neo4j/core/query.rb +487 -0
  24. data/lib/neo4j/core/query_builder.rb +32 -0
  25. data/lib/neo4j/core/query_clauses.rb +727 -0
  26. data/lib/neo4j/core/query_find_in_batches.rb +49 -0
  27. data/lib/neo4j/core/relationship.rb +13 -0
  28. data/lib/neo4j/core/responses.rb +50 -0
  29. data/lib/neo4j/core/result.rb +33 -0
  30. data/lib/neo4j/core/schema.rb +30 -0
  31. data/lib/neo4j/core/schema_errors.rb +12 -0
  32. data/lib/neo4j/core/wrappable.rb +30 -0
  33. data/lib/neo4j/migration.rb +2 -2
  34. data/lib/neo4j/migrations/base.rb +1 -1
  35. data/lib/neo4j/model_schema.rb +2 -2
  36. data/lib/neo4j/railtie.rb +8 -52
  37. data/lib/neo4j/schema/operation.rb +1 -1
  38. data/lib/neo4j/shared.rb +1 -1
  39. data/lib/neo4j/shared/property.rb +1 -1
  40. data/lib/neo4j/tasks/migration.rake +5 -4
  41. data/lib/neo4j/transaction.rb +137 -0
  42. data/lib/neo4j/version.rb +1 -1
  43. data/neo4j.gemspec +5 -5
  44. metadata +59 -26
  45. data/bin/neo4j-jars +0 -33
  46. data/lib/neo4j/active_base/session_registry.rb +0 -12
  47. data/lib/neo4j/session_manager.rb +0 -78
data/lib/neo4j/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Neo4j
2
- VERSION = '9.6.2'
2
+ VERSION = '10.0.0-alpha.1'
3
3
  end
data/neo4j.gemspec CHANGED
@@ -10,8 +10,8 @@ Gem::Specification.new do |s|
10
10
 
11
11
  s.required_ruby_version = ((RUBY_PLATFORM == 'java') ? '>= 1.9.3' : '>= 2.1.9')
12
12
 
13
- s.authors = 'Andreas Ronge, Brian Underwood, Chris Grigg'
14
- s.email = 'andreas.ronge@gmail.com, public@brian-underwood.codes, chris@subvertallmedia.com'
13
+ s.authors = 'Andreas Ronge, Brian Underwood, Chris Grigg, Heinrich Klobuczek'
14
+ s.email = 'andreas.ronge@gmail.com, public@brian-underwood.codes, chris@subvertallmedia.com, heinrich@mail.com'
15
15
  s.homepage = 'https://github.com/neo4jrb/neo4j/'
16
16
  s.rubyforge_project = 'neo4j'
17
17
  s.summary = 'A graph database for Ruby'
@@ -22,7 +22,7 @@ DESCRIPTION
22
22
 
23
23
  s.require_path = 'lib'
24
24
  s.files = Dir.glob('{bin,lib,config}/**/*') + %w(README.md CHANGELOG.md CONTRIBUTORS Gemfile neo4j.gemspec)
25
- s.executables = ['neo4j-jars']
25
+ s.executables = []
26
26
  s.extra_rdoc_files = %w( README.md )
27
27
  s.rdoc_options = ['--quiet', '--title', 'Neo4j.rb', '--line-numbers', '--main', 'README.rdoc', '--inline-source']
28
28
  s.metadata = {
@@ -35,17 +35,17 @@ DESCRIPTION
35
35
  s.add_dependency('activemodel', '>= 4.0')
36
36
  s.add_dependency('activesupport', '>= 4.0')
37
37
  s.add_dependency('i18n', '!= 1.3.0') # version 1.3.0 introduced a bug with `symbolize_key`
38
- s.add_dependency('neo4j-core', '>= 9.0.0')
39
38
  s.add_dependency('orm_adapter', '~> 0.5.0')
40
39
  s.add_development_dependency('guard')
41
40
  s.add_development_dependency('guard-rspec')
42
41
  s.add_development_dependency('guard-rubocop')
43
- s.add_development_dependency('neo4j-community', '~> 2.0') if RUBY_PLATFORM =~ /java/
44
42
  s.add_development_dependency('neo4j-rake_tasks', '>= 0.3.0')
43
+ s.add_development_dependency("neo4j-#{RUBY_PLATFORM =~ /java/ ? 'java' : 'ruby'}-driver", '>= 0.1.5')
45
44
  s.add_development_dependency('os')
46
45
  s.add_development_dependency('pry')
47
46
  s.add_development_dependency('railties', '>= 4.0')
48
47
  s.add_development_dependency('rake')
49
48
  s.add_development_dependency('rubocop', '~> 0.56.0')
50
49
  s.add_development_dependency('yard')
50
+ s.add_development_dependency('dryspec')
51
51
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: neo4j
3
3
  version: !ruby/object:Gem::Version
4
- version: 9.6.2
4
+ version: 10.0.0.pre.alpha.1
5
5
  platform: ruby
6
6
  authors:
7
- - Andreas Ronge, Brian Underwood, Chris Grigg
7
+ - Andreas Ronge, Brian Underwood, Chris Grigg, Heinrich Klobuczek
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-04-09 00:00:00.000000000 Z
11
+ date: 2019-12-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activemodel
@@ -52,20 +52,6 @@ dependencies:
52
52
  - - "!="
53
53
  - !ruby/object:Gem::Version
54
54
  version: 1.3.0
55
- - !ruby/object:Gem::Dependency
56
- name: neo4j-core
57
- requirement: !ruby/object:Gem::Requirement
58
- requirements:
59
- - - ">="
60
- - !ruby/object:Gem::Version
61
- version: 9.0.0
62
- type: :runtime
63
- prerelease: false
64
- version_requirements: !ruby/object:Gem::Requirement
65
- requirements:
66
- - - ">="
67
- - !ruby/object:Gem::Version
68
- version: 9.0.0
69
55
  - !ruby/object:Gem::Dependency
70
56
  name: orm_adapter
71
57
  requirement: !ruby/object:Gem::Requirement
@@ -136,6 +122,20 @@ dependencies:
136
122
  - - ">="
137
123
  - !ruby/object:Gem::Version
138
124
  version: 0.3.0
125
+ - !ruby/object:Gem::Dependency
126
+ name: neo4j-ruby-driver
127
+ requirement: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - ">="
130
+ - !ruby/object:Gem::Version
131
+ version: 0.1.5
132
+ type: :development
133
+ prerelease: false
134
+ version_requirements: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - ">="
137
+ - !ruby/object:Gem::Version
138
+ version: 0.1.5
139
139
  - !ruby/object:Gem::Dependency
140
140
  name: os
141
141
  requirement: !ruby/object:Gem::Requirement
@@ -220,12 +220,26 @@ dependencies:
220
220
  - - ">="
221
221
  - !ruby/object:Gem::Version
222
222
  version: '0'
223
+ - !ruby/object:Gem::Dependency
224
+ name: dryspec
225
+ requirement: !ruby/object:Gem::Requirement
226
+ requirements:
227
+ - - ">="
228
+ - !ruby/object:Gem::Version
229
+ version: '0'
230
+ type: :development
231
+ prerelease: false
232
+ version_requirements: !ruby/object:Gem::Requirement
233
+ requirements:
234
+ - - ">="
235
+ - !ruby/object:Gem::Version
236
+ version: '0'
223
237
  description: 'A Neo4j OGM (Object-Graph-Mapper) for Ruby heavily inspired by ActiveRecord.
224
238
 
225
239
  '
226
- email: andreas.ronge@gmail.com, public@brian-underwood.codes, chris@subvertallmedia.com
227
- executables:
228
- - neo4j-jars
240
+ email: andreas.ronge@gmail.com, public@brian-underwood.codes, chris@subvertallmedia.com,
241
+ heinrich@mail.com
242
+ executables: []
229
243
  extensions: []
230
244
  extra_rdoc_files:
231
245
  - README.md
@@ -234,14 +248,12 @@ files:
234
248
  - CONTRIBUTORS
235
249
  - Gemfile
236
250
  - README.md
237
- - bin/neo4j-jars
238
251
  - bin/rake
239
252
  - config/locales/en.yml
240
253
  - config/neo4j/add_classnames.yml
241
254
  - config/neo4j/config.yml
242
255
  - lib/neo4j.rb
243
256
  - lib/neo4j/active_base.rb
244
- - lib/neo4j/active_base/session_registry.rb
245
257
  - lib/neo4j/active_node.rb
246
258
  - lib/neo4j/active_node/callbacks.rb
247
259
  - lib/neo4j/active_node/dependent.rb
@@ -290,9 +302,30 @@ files:
290
302
  - lib/neo4j/active_rel/related_node.rb
291
303
  - lib/neo4j/active_rel/types.rb
292
304
  - lib/neo4j/active_rel/validations.rb
305
+ - lib/neo4j/ansi.rb
293
306
  - lib/neo4j/class_arguments.rb
294
307
  - lib/neo4j/config.rb
308
+ - lib/neo4j/core.rb
309
+ - lib/neo4j/core/connection_failed_error.rb
310
+ - lib/neo4j/core/cypher_error.rb
311
+ - lib/neo4j/core/driver.rb
312
+ - lib/neo4j/core/has_uri.rb
313
+ - lib/neo4j/core/instrumentable.rb
314
+ - lib/neo4j/core/label.rb
315
+ - lib/neo4j/core/logging.rb
316
+ - lib/neo4j/core/node.rb
317
+ - lib/neo4j/core/querable.rb
318
+ - lib/neo4j/core/query.rb
319
+ - lib/neo4j/core/query_builder.rb
320
+ - lib/neo4j/core/query_clauses.rb
295
321
  - lib/neo4j/core/query_ext.rb
322
+ - lib/neo4j/core/query_find_in_batches.rb
323
+ - lib/neo4j/core/relationship.rb
324
+ - lib/neo4j/core/responses.rb
325
+ - lib/neo4j/core/result.rb
326
+ - lib/neo4j/core/schema.rb
327
+ - lib/neo4j/core/schema_errors.rb
328
+ - lib/neo4j/core/wrappable.rb
296
329
  - lib/neo4j/errors.rb
297
330
  - lib/neo4j/migration.rb
298
331
  - lib/neo4j/migrations.rb
@@ -310,7 +343,6 @@ files:
310
343
  - lib/neo4j/paginated.rb
311
344
  - lib/neo4j/railtie.rb
312
345
  - lib/neo4j/schema/operation.rb
313
- - lib/neo4j/session_manager.rb
314
346
  - lib/neo4j/shared.rb
315
347
  - lib/neo4j/shared/attributes.rb
316
348
  - lib/neo4j/shared/callbacks.rb
@@ -338,6 +370,7 @@ files:
338
370
  - lib/neo4j/timestamps.rb
339
371
  - lib/neo4j/timestamps/created.rb
340
372
  - lib/neo4j/timestamps/updated.rb
373
+ - lib/neo4j/transaction.rb
341
374
  - lib/neo4j/type_converters.rb
342
375
  - lib/neo4j/undeclared_properties.rb
343
376
  - lib/neo4j/version.rb
@@ -377,11 +410,11 @@ required_ruby_version: !ruby/object:Gem::Requirement
377
410
  version: 2.1.9
378
411
  required_rubygems_version: !ruby/object:Gem::Requirement
379
412
  requirements:
380
- - - ">="
413
+ - - ">"
381
414
  - !ruby/object:Gem::Version
382
- version: '0'
415
+ version: 1.3.1
383
416
  requirements: []
384
- rubygems_version: 3.1.2
417
+ rubygems_version: 3.0.6
385
418
  signing_key:
386
419
  specification_version: 4
387
420
  summary: A graph database for Ruby
data/bin/neo4j-jars DELETED
@@ -1,33 +0,0 @@
1
- #!/usr/bin/env ruby
2
-
3
- require 'neo4j'
4
-
5
- if ARGV.empty?
6
- puts <<TEXT
7
- A tool for copying jar files needed by the application server, like trinidad
8
- It copies all jar files which has been required (neo4j-community, neo4j-advanced or neo4j-enterprise) to the lib folder of the current directory
9
-
10
- Usage: neo4j-jars <community|advanced|enterprise>
11
-
12
- TEXT
13
- exit
14
- end
15
-
16
- if ARGV.include?('community')
17
- require 'neo4j-community' # not really needed
18
- elsif ARGV.include?('advanced')
19
- require 'neo4j-advanced' # not really needed
20
- elsif ARGV.include?('enterprise')
21
- require 'neo4j-enterprise' # not really needed
22
- else
23
- puts 'Expected community, advanced, enterprise'
24
- exit(-1)
25
- end
26
-
27
- lib_dir = File.join(Dir.pwd, 'lib')
28
- fail "Expected a lib folder where to copy the jars file, mkdir #{lib_dir}? " unless File.exist?(lib_dir)
29
-
30
- files = $CLASSPATH.find_all { |x| x =~ /\.jar$/ }.collect { |y| y.sub('file:', '') }
31
- files.each { |file| FileUtils.cp(file, lib_dir) }
32
-
33
- puts "copied #{files.size} files to #{lib_dir}"
@@ -1,12 +0,0 @@
1
- require 'active_support/per_thread_registry'
2
-
3
- module Neo4j
4
- module ActiveBase
5
- # Provides a simple API to manage sessions in a thread-safe manner
6
- class SessionRegistry
7
- extend ActiveSupport::PerThreadRegistry
8
-
9
- attr_accessor :current_session
10
- end
11
- end
12
- end
@@ -1,78 +0,0 @@
1
- require 'active_support/core_ext/hash'
2
- require 'active_support/ordered_options'
3
-
4
- module Neo4j
5
- class SessionManager
6
- class << self
7
- def open_neo4j_session(type, url_or_path, wait_for_connection = false, options = {})
8
- enable_unlimited_strength_crypto! if java_platform? && session_type_is_embedded?(type)
9
-
10
- verbose_query_logs = Neo4j::Config.fetch(:verbose_query_logs, false)
11
- adaptor = cypher_session_adaptor(type, url_or_path, options.merge(wrap_level: :proc,
12
- verbose_query_logs: verbose_query_logs))
13
- session = Neo4j::Core::CypherSession.new(adaptor)
14
- wait_and_retry(session) if wait_for_connection
15
- session
16
- end
17
-
18
- def adaptor_class(type, options)
19
- options[:adaptor_class] || adaptor_class_by_type(type.to_sym)
20
- end
21
-
22
- protected
23
-
24
- def session_type_is_embedded?(session_type)
25
- [:embedded_db, :embedded].include?(session_type)
26
- end
27
-
28
- def enable_unlimited_strength_crypto!
29
- # See https://github.com/jruby/jruby/wiki/UnlimitedStrengthCrypto
30
- security_class = java.lang.Class.for_name('javax.crypto.JceSecurity')
31
- restricted_field = security_class.get_declared_field('isRestricted')
32
- restricted_field.accessible = true
33
- restricted_field.set nil, false
34
- end
35
-
36
- def cypher_session_adaptor(type, path_or_url, options = {})
37
- adaptor_class(type, options).new(path_or_url, options)
38
- end
39
-
40
- def java_platform?
41
- RUBY_PLATFORM =~ /java/
42
- end
43
-
44
- def wait_and_retry(session)
45
- Timeout.timeout(60) do
46
- begin
47
- session.constraints
48
- rescue Neo4j::Core::CypherSession::ConnectionFailedError
49
- sleep(1)
50
- retry
51
- end
52
- end
53
- rescue Timeout::Error
54
- raise Timeout::Error, 'Timeout while waiting for connection to neo4j database'
55
- end
56
-
57
- private
58
-
59
- def adaptor_class_by_type(type)
60
- ActiveSupport::Deprecation.warn('`embedded_db` session type is deprecated, please use `embedded`') if type == :embedded_db
61
- case type
62
- when :embedded_db, :embedded
63
- require 'neo4j/core/cypher_session/adaptors/embedded'
64
- Neo4j::Core::CypherSession::Adaptors::Embedded
65
- when :http
66
- require 'neo4j/core/cypher_session/adaptors/http'
67
- Neo4j::Core::CypherSession::Adaptors::HTTP
68
- when :bolt
69
- require 'neo4j/core/cypher_session/adaptors/bolt'
70
- Neo4j::Core::CypherSession::Adaptors::Bolt
71
- else
72
- extra = ' (`server_db` has been replaced by `http` or `bolt`)'
73
- fail ArgumentError, "Invalid session type: #{type.inspect} (expected one of [:http, :bolt, :embedded])#{extra if type == :server_db}"
74
- end
75
- end
76
- end
77
- end
78
- end