neo4j 8.0.0.alpha.5 → 8.0.0.alpha.6

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 35366c5049bd09b2d9172d7f174576aacb39b3ab
4
- data.tar.gz: 3e19875b85dcc4de4a7f5f1a21d9351db2a66c03
3
+ metadata.gz: ac1f95d91c95d7a8d809de657a186fe9a98f0872
4
+ data.tar.gz: b1fb1a75eaacc95293219bdc997513a523222ee1
5
5
  SHA512:
6
- metadata.gz: 48be8c4082aa6603f6a5a09ecfd6173707f90fe228e1f7e2dd1fedd95de7e00b557a8287b4d5c375e3d1f25b745b7997c7132c919056e913fdff27ac81126596
7
- data.tar.gz: d92edef01fa0175833fc0849ae67416681abd01483131100437973860453037fe0991b361d98bc22e1e9d72426cdf658f8f8d839887583df0118782b108dda00
6
+ metadata.gz: 8a01f591a8e12eb3d305f9c7fcba1779bba18034d1ad413e8b856ee362a61e66cc5a06dbe5e810f9f9fe9542a25f336b052f8a1a34669c16582ac509de6ab8c7
7
+ data.tar.gz: aad90232c15f4c746195237be20f98e2a4bf091c4f32a65f7a205660a90ca6f3af73fdf5e8176493fa2d201714ae07bb2357bb58716dedf3a4f88b16e6503a0d
@@ -14,10 +14,15 @@ This project adheres to [Semantic Versioning](http://semver.org/).
14
14
  ### Changed
15
15
 
16
16
  - `ActiveNode#destroy` and `ActiveRel#destroy` now return the object in question rather than `true` to be compatible with `ActiveRecord` (see #1254)
17
+ - Multiple sessions in Rails config no longer supported
18
+ - Instead of using `session_type`, `session_url`, `session_path`, and `session_options` in config `session.type`, `session.url`, `session.path`, and `session.options` should now be used.
17
19
 
18
20
  ### Fixed
19
21
 
20
22
  - Bugs with using `neo_id` as `ActiveNode` `id_property` (thanks klobuczek / see #1274)
23
+ - Issue where `session_url` (now `session.url`) was not working
24
+ - Various issues with not be able to run migrations when migration were pending
25
+ - Broken sessions when threading
21
26
 
22
27
  ## [8.0.0.alpha.2] 2016-08-05
23
28
 
@@ -5,11 +5,19 @@ module Neo4j
5
5
  class << self
6
6
  # private?
7
7
  def current_session
8
- SessionRegistry.current_session.tap do |session|
8
+ (SessionRegistry.current_session ||= establish_session).tap do |session|
9
9
  fail 'No session defined!' if session.nil?
10
10
  end
11
11
  end
12
12
 
13
+ def on_establish_session(&block)
14
+ @establish_session_block = block
15
+ end
16
+
17
+ def establish_session
18
+ @establish_session_block.call if @establish_session_block
19
+ end
20
+
13
21
  def current_transaction_or_session
14
22
  current_transaction || current_session
15
23
  end
@@ -45,27 +45,69 @@ module Neo4j
45
45
  # Starting Neo after :load_config_initializers allows apps to
46
46
  # register migrations in config/initializers
47
47
  initializer 'neo4j.start', after: :load_config_initializers do |app|
48
- cfg = app.config.neo4j
49
- # Set Rails specific defaults
50
- Neo4j::SessionManager.setup! cfg
48
+ Neo4j::ActiveBase.on_establish_session { setup! app.config.neo4j }
51
49
 
52
50
  Neo4j::Config[:logger] ||= Rails.logger
53
51
 
54
- session_types = cfg.sessions.map { |session_opts| session_opts[:type] }
55
-
56
- register_neo4j_cypher_logging(session_types)
57
52
  if Rails.env.development? && !Neo4j::Migrations.currently_running_migrations && Neo4j::Config.fail_on_pending_migrations
58
53
  Neo4j::Migrations.check_for_pending_migrations!
59
54
  end
60
55
  end
61
56
 
57
+ def setup!(cfg = nil)
58
+ neo4j_config ||= ActiveSupport::OrderedOptions.new
59
+ cfg.each {|k, v| neo4j_config[k] = v } if cfg
60
+
61
+ support_deprecated_session_configs!(neo4j_config)
62
+
63
+ Neo4j::Config.configuration.merge!(neo4j_config.to_h)
64
+
65
+ type, url, path, options, wait_for_connection = neo4j_config.session.values_at(:type, :path, :url, :options, :wait_for_connection)
66
+ register_neo4j_cypher_logging(type || default_session_type)
67
+
68
+ Neo4j::SessionManager.open_neo4j_session(type || default_session_type,
69
+ url || path || default_session_path_or_url,
70
+ wait_for_connection,
71
+ options || {})
72
+ end
73
+
74
+ def support_deprecated_session_configs!(neo4j_config)
75
+ ActiveSupport::Deprecation.warn('neo4j.config.sessions is deprecated, please use neo4j.config.session (not an array)') if neo4j_config.sessions.present?
76
+ neo4j_config.session ||= (neo4j_config.sessions && neo4j_config.sessions[0]) || {}
77
+
78
+ %w(type path url options).each do |key|
79
+ value = neo4j_config.send("session_#{key}")
80
+ if value.present?
81
+ ActiveSupport::Deprecation.warn("neo4j.config.session_#{key} is deprecated, please use neo4j.config.session.#{key}")
82
+ neo4j_config.session[key] = value
83
+ end
84
+ end
85
+ end
86
+
87
+ def default_session_type
88
+ if ENV['NEO4J_URL']
89
+ URI(ENV['NEO4J_URL']).scheme.tap do |scheme|
90
+ fail "Invalid scheme for NEO4J_URL: #{scheme}" if !%w(http bolt).include?(scheme)
91
+ end
92
+ else
93
+ ENV['NEO4J_TYPE'] || config_data[:type] || :http
94
+ end.to_sym
95
+ end
96
+
97
+ def default_session_path_or_url
98
+ ENV['NEO4J_URL'] || ENV['NEO4J_PATH'] ||
99
+ config_data[:url] || config_data[:path] ||
100
+ 'http://localhost:7474'
101
+ end
102
+
103
+
62
104
  TYPE_SUBSCRIBERS = {
63
105
  http: Neo4j::Core::CypherSession::Adaptors::HTTP.method(:subscribe_to_request),
64
106
  bolt: Neo4j::Core::CypherSession::Adaptors::Bolt.method(:subscribe_to_request),
65
107
  embedded: Neo4j::Core::CypherSession::Adaptors::Embedded.method(:subscribe_to_transaction)
66
108
  }
67
109
 
68
- def register_neo4j_cypher_logging(session_types)
110
+ def register_neo4j_cypher_logging(session_type)
69
111
  return if @neo4j_cypher_logging_registered
70
112
 
71
113
  Neo4j::Core::Query.pretty_cypher = Neo4j::Config[:pretty_logged_cypher_queries]
@@ -74,9 +116,7 @@ module Neo4j
74
116
  (Neo4j::Config[:logger] ||= Rails.logger).debug message
75
117
  end
76
118
  Neo4j::Core::CypherSession::Adaptors::Base.subscribe_to_query(&logger_proc)
77
- session_types.map(&:to_sym).uniq.each do |type|
78
- TYPE_SUBSCRIBERS[type].call(&logger_proc)
79
- end
119
+ TYPE_SUBSCRIBERS[session_type.to_sym].call(&logger_proc)
80
120
 
81
121
  @neo4j_cypher_logging_registered = true
82
122
  end
@@ -7,46 +7,14 @@ require 'neo4j/core/cypher_session/adaptors/embedded'
7
7
  module Neo4j
8
8
  class SessionManager
9
9
  class << self
10
- def setup!(cfg = nil)
11
- cfg ||= ActiveSupport::OrderedOptions.new
12
-
13
- setup_default_session(cfg)
14
-
15
- cfg.sessions.each do |session_opts|
16
- open_neo4j_session(session_opts, cfg.wait_for_connection)
17
- end
18
-
19
- Neo4j::Config.configuration.merge!(cfg.to_h)
20
- end
21
-
22
- # TODO: Remove ability for multiple sessions?
23
- # Ability to overwrite default session per-model like ActiveRecord?
24
- def setup_default_session(cfg)
25
- setup_config_defaults!(cfg)
26
-
27
- return if !cfg.sessions.empty?
28
-
29
- cfg.sessions << {type: cfg.session_type, path: cfg.session_path, options: cfg.session_options.merge(default: true)}
30
- end
31
-
32
- # TODO: Support `session_url` config for server mode
33
- def setup_config_defaults!(cfg)
34
- cfg.session_type ||= default_session_type
35
- cfg.session_path ||= default_session_path
36
- cfg.session_options ||= {}
37
- cfg.sessions ||= []
38
- end
39
-
40
- def open_neo4j_session(options, wait_for_connection = false)
41
- session_type, path, url = options.values_at(:type, :path, :url)
42
-
10
+ def open_neo4j_session(type, url_or_path, url, wait_for_connection = false, options = {})
43
11
  enable_unlimited_strength_crypto! if java_platform? && session_type_is_embedded?(session_type)
44
12
 
45
13
  adaptor = wait_for_value(wait_for_connection) do
46
- cypher_session_adaptor(session_type, url || path, (options[:options] || {}).merge(wrap_level: :proc))
14
+ cypher_session_adaptor(type, url_or_path, options.merge(wrap_level: :proc))
47
15
  end
48
16
 
49
- Neo4j::ActiveBase.current_adaptor = adaptor
17
+ Neo4j::Core::CypherSession.new(adaptor)
50
18
  end
51
19
 
52
20
  protected
@@ -94,22 +62,6 @@ module Neo4j
94
62
  end
95
63
  end
96
64
 
97
- def default_session_type
98
- if ENV['NEO4J_URL']
99
- URI(ENV['NEO4J_URL']).scheme.tap do |scheme|
100
- fail "Invalid scheme for NEO4J_URL: #{scheme}" if !%w(http bolt).include?(scheme)
101
- end
102
- else
103
- ENV['NEO4J_TYPE'] || config_data[:type] || :http
104
- end.to_sym
105
- end
106
-
107
- def default_session_path
108
- ENV['NEO4J_URL'] || ENV['NEO4J_PATH'] ||
109
- config_data[:url] || config_data[:path] ||
110
- 'http://localhost:7474'
111
- end
112
-
113
65
  def java_platform?
114
66
  RUBY_PLATFORM =~ /java/
115
67
  end
@@ -1,3 +1,3 @@
1
1
  module Neo4j
2
- VERSION = '8.0.0.alpha.5'
2
+ VERSION = '8.0.0.alpha.6'
3
3
  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: 8.0.0.alpha.5
4
+ version: 8.0.0.alpha.6
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: 2016-09-08 00:00:00.000000000 Z
11
+ date: 2016-09-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: orm_adapter