activegraph 11.2.0 → 11.3.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 4b0ec846225c753d7a2dc2bc3923c95f52dec582324559df182f23df633f564c
4
- data.tar.gz: 1205c8eaf374112629a173f55e2c9a5fae42324073b2f540815eb984cb87e324
3
+ metadata.gz: a1ae9faa69f9792692e849f1d3de64c0a22b8e5623302cde0b1e707bfb443bba
4
+ data.tar.gz: 57cb8e74aae28b60346bd7c908ed4e793df433c0722b3ab2322320d5a9bab217
5
5
  SHA512:
6
- metadata.gz: '07091d4bf26b0b2bfb4d6313668e358eb78f8eb6afb7244063a2293a3596963687debf7fe6e72177ba388ac008a9452a8bd580fb48064575354e0e208765f475'
7
- data.tar.gz: '09dc2f6eaf0126d26b76aba057b9b7e77e0b633f0b13ab99964ed64fd64e7421f22eaa470d9abd0fca4bd896e122ca938814683bc0c618e7d37d2ded400c00de'
6
+ metadata.gz: c5de6bb15067a8c93a14be2dd8949d70d0edcbc1bdabcab2c0880e11dda13f9bfcbdddc51c82438d7cd1642fafb841cbe6b03ca714d1633f3c8b09396531eb0c
7
+ data.tar.gz: 976b9fa40c5056de62e7dc9fc3437c107adf13b09f5d1b07b660b79f92f74c9434c18114e4bab1c16e845f529e145c4b337e461cf77b5a4f40d5255a9619103f
data/CHANGELOG.md CHANGED
@@ -3,6 +3,22 @@ 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
+ ## [11.3.1] 2023-02-12
7
+
8
+ ## Fixed
9
+
10
+ - Fixed an issue with keyword arguments on jruby-9.3 when none were passed
11
+
12
+ ## [11.3.0] 2023-02-10
13
+
14
+ ## Added
15
+
16
+ - support for keyword arguments in scopes
17
+
18
+ ## Fixed
19
+
20
+ - Fixed issue with psych https://github.com/neo4jrb/activegraph/issues/1684 (Thanks @chytreg)
21
+
6
22
  ## [11.2.0] 2023-02-06
7
23
 
8
24
  ## Added
@@ -155,14 +155,18 @@ module ActiveGraph::Node
155
155
 
156
156
  CACHED_RESULT_METHODS = []
157
157
 
158
- def method_missing(method_name, *args, &block)
158
+ def method_missing(method_name, *args, **kwargs, &block)
159
159
  target = target_for_missing_method(method_name)
160
160
  super if target.nil?
161
161
 
162
162
  cache_query_proxy_result if !cached? && !target.is_a?(ActiveGraph::Node::Query::QueryProxy)
163
163
  clear_cache_result if target.is_a?(ActiveGraph::Node::Query::QueryProxy)
164
164
 
165
- target.public_send(method_name, *args, &block)
165
+ if RUBY_VERSION < '3' && kwargs.empty?
166
+ target.public_send(method_name, *args, &block)
167
+ else
168
+ target.public_send(method_name, *args, **kwargs, &block)
169
+ end
166
170
  end
167
171
 
168
172
  def serializable_hash(options = {})
@@ -243,9 +243,15 @@ module ActiveGraph
243
243
 
244
244
  # QueryProxy objects act as a representation of a model at the class level so we pass through calls
245
245
  # This allows us to define class functions for reusable query chaining or for end-of-query aggregation/summarizing
246
- def method_missing(method_name, *args, &block)
246
+ def method_missing(method_name, *args, **kwargs, &block)
247
247
  if @model && @model.respond_to?(method_name)
248
- scoping { @model.public_send(method_name, *args, &block) }
248
+ scoping do
249
+ if RUBY_VERSION < '3' && kwargs.empty?
250
+ @model.public_send(method_name, *args, &block)
251
+ else
252
+ @model.public_send(method_name, *args, **kwargs, &block)
253
+ end
254
+ end
249
255
  else
250
256
  super
251
257
  end
@@ -39,15 +39,15 @@ module ActiveGraph::Node
39
39
 
40
40
  klass = class << self; self; end
41
41
  klass.instance_eval do
42
- define_method(name) do |*query_params|
42
+ define_method(name) do |*query_params, **kwargs|
43
43
  eval_context = ScopeEvalContext.new(self, current_scope || self.query_proxy)
44
44
  proc = full_scopes[name.to_sym]
45
- _call_scope_context(eval_context, query_params, proc)
45
+ _call_scope_context(eval_context, *query_params, **kwargs, &proc)
46
46
  end
47
47
  end
48
48
 
49
- define_method(name) do |*query_params|
50
- as(:n).public_send(name, *query_params)
49
+ define_method(name) do |*query_params, **kwargs|
50
+ as(:n).public_send(name, *query_params, **kwargs)
51
51
  end
52
52
  end
53
53
 
@@ -76,8 +76,14 @@ module ActiveGraph::Node
76
76
  end
77
77
  end
78
78
 
79
- def _call_scope_context(eval_context, query_params, proc)
80
- eval_context.instance_exec(*query_params.fill(nil, query_params.length..proc.arity - 1), &proc)
79
+ def _call_scope_context(eval_context, *query_params, **kwargs, &proc)
80
+ last_vararg_index = proc.arity - (kwargs.empty? ? 1 : 2)
81
+ query_params.fill(nil, query_params.length..last_vararg_index)
82
+ if RUBY_VERSION < '3' && kwargs.empty?
83
+ eval_context.instance_exec(*query_params, &proc)
84
+ else
85
+ eval_context.instance_exec(*query_params, **kwargs, &proc)
86
+ end
81
87
  end
82
88
 
83
89
  def current_scope #:nodoc:
@@ -118,8 +124,12 @@ module ActiveGraph::Node
118
124
 
119
125
  # method_missing is not delegated to super class but to aggregated class
120
126
  # rubocop:disable Style/MethodMissingSuper
121
- def method_missing(name, *params, &block)
122
- query_proxy_or_target.public_send(name, *params, &block)
127
+ def method_missing(name, *params, **kwargs, &block)
128
+ if RUBY_VERSION < '3' && kwargs.empty?
129
+ query_proxy_or_target.public_send(name, *params, &block)
130
+ else
131
+ query_proxy_or_target.public_send(name, *params, **kwargs, &block)
132
+ end
123
133
  end
124
134
  # rubocop:enable Style/MethodMissingSuper
125
135
 
@@ -61,8 +61,12 @@ module ActiveGraph::Relationship
61
61
  !@node.nil?
62
62
  end
63
63
 
64
- def method_missing(*args, &block)
65
- loaded.send(*args, &block)
64
+ def method_missing(*args, **kwargs, &block)
65
+ if RUBY_VERSION < '3' && kwargs.empty?
66
+ loaded.send(*args, &block)
67
+ else
68
+ loaded.send(*args, **kwargs, &block)
69
+ end
66
70
  end
67
71
 
68
72
  def respond_to_missing?(method_name, include_private = false)
@@ -41,7 +41,7 @@ module ActiveGraph::Shared
41
41
  # Media.enum type: { image: 1, video: 2, unknown: 3 }
42
42
  #
43
43
  # @see http://edgeapi.rubyonrails.org/classes/ActiveRecord/Enum.html
44
- def enum(parameters = {})
44
+ def enum(**parameters)
45
45
  options, parameters = *split_options_and_parameters(parameters)
46
46
  parameters.each do |property_name, enum_keys|
47
47
  enum_keys = normalize_key_list enum_keys, options
@@ -83,7 +83,11 @@ COMMENT
83
83
 
84
84
  args.with_defaults(remove_missing: false)
85
85
 
86
- schema_data = YAML.safe_load(File.read(SCHEMA_YAML_PATH), [Symbol])
86
+ schema_data = if Gem::Requirement.new('>= 4') =~ Gem::Version.new(Psych::VERSION)
87
+ YAML.safe_load(File.read(SCHEMA_YAML_PATH), permitted_classes: [Symbol])
88
+ else
89
+ YAML.safe_load(File.read(SCHEMA_YAML_PATH), [Symbol])
90
+ end
87
91
 
88
92
  ActiveGraph::Base.subscribe_to_query(&method(:puts))
89
93
 
@@ -1,3 +1,3 @@
1
1
  module ActiveGraph
2
- VERSION = '11.2.0'
2
+ VERSION = '11.3.1'
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: activegraph
3
3
  version: !ruby/object:Gem::Version
4
- version: 11.2.0
4
+ version: 11.3.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Andreas Ronge, Brian Underwood, Chris Grigg, Heinrich Klobuczek
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-02-06 00:00:00.000000000 Z
11
+ date: 2023-02-13 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activemodel
@@ -444,7 +444,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
444
444
  - !ruby/object:Gem::Version
445
445
  version: '0'
446
446
  requirements: []
447
- rubygems_version: 3.4.1
447
+ rubygems_version: 3.3.26
448
448
  signing_key:
449
449
  specification_version: 4
450
450
  summary: A graph database for Ruby