rack-graphql 3.3.0.beta → 3.3.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 532f0f16301ca51cb072332f905ab255514d771fbf45e78b4841843acd4dc11e
4
- data.tar.gz: 595f33e14ca13493367d7c6bd956fff2f43f1202ab698e1f7641220e46cf8cc0
3
+ metadata.gz: c5d4ffebb36635210874227b52711af8973b7d882843b19ea29be127bde361e7
4
+ data.tar.gz: ebe79a3fc4bed9259a8d22f915701d9424376866abc082b8c7567afdb1754999
5
5
  SHA512:
6
- metadata.gz: 7a59eacd519ad77e4848090c18bd823889ed7d7e1edb51004739b83caadf9ea4d91bdd9f4d275c639b3165564160130e1762ab32820de67e0abc7ef3ce57cea7
7
- data.tar.gz: 27624f4f2e3b79f71520ee41bb9455493a4d64b01cfabd402a9db9141a6551fbf7a76613a0bfccf81698080f82d30fa473997304e62c726c7274b51d6fddd47e
6
+ metadata.gz: ec6cb68ea5a1f5184428a1edee0b9c7349f8cafa14dde3f64ae627d5880506272982b945d77c8c0772ff9a5539dd70689a77aebed80a62825ce4f2dc41fa4fb3
7
+ data.tar.gz: 16e0f39e00e0c1e956c61b4dc353a96f706d264b9d48ba4d297c51732e0fa2b2d28260b0ec4a8b162537fd709203b951c9249fef49432050093d1f58cb16e112
data/CHANGELOG.md CHANGED
@@ -1,5 +1,10 @@
1
1
  # CHANGELOG
2
2
 
3
+ ## 3.3.0 - 2023-11-23
4
+
5
+ - add `request_epilogue` so actions like `ActiveRecord::Base.connection_handler.clear_active_connections!` can be passed manually
6
+ - ruby 3.1 is the minimal ruby version
7
+
3
8
  ## 3.1.3 - 2023-10-10
4
9
 
5
10
  - use `ActiveRecord::Base.connection_handler.clear_active_connections!` instead of ActiveRecord::Base.clear_active_connections!`, which is deprecated
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- rack-graphql (3.3.0.beta)
4
+ rack-graphql (3.3.0)
5
5
  graphql (~> 2.0)
6
6
  oj
7
7
  rack (>= 2.2.6)
data/README.md CHANGED
@@ -34,6 +34,7 @@ run RackGraphql::Application.call(
34
34
  logger: A9n.logger, # optional, not set by default
35
35
  error_status_code_map: { IamTeapotError => 418 }, # optional
36
36
  re_raise_exceptions: true, # optional, false by default
37
+ request_epilogue: -> { ActiveRecord::Base.connection_handler.clear_active_connections! }
37
38
  )
38
39
  ```
39
40
 
@@ -11,29 +11,31 @@ module RackGraphql
11
11
  health_response_builder: RackGraphql::HealthResponseBuilder,
12
12
  health_on_root_path: health_route,
13
13
  root_path_app: nil,
14
- error_status_code_map: {}
14
+ error_status_code_map: {},
15
+ request_epilogue: -> {}
15
16
  )
16
17
 
17
18
  ::Rack::Builder.new do
18
19
  map '/graphql' do
19
20
  run RackGraphql::Middleware.new(
20
- app_name: app_name,
21
- schema: schema,
22
- context_handler: context_handler,
23
- re_raise_exceptions: re_raise_exceptions,
24
- logger: logger,
25
- log_exception_backtrace: log_exception_backtrace,
26
- error_status_code_map: error_status_code_map,
21
+ app_name:,
22
+ schema:,
23
+ context_handler:,
24
+ re_raise_exceptions:,
25
+ logger:,
26
+ log_exception_backtrace:,
27
+ error_status_code_map:,
28
+ request_epilogue:,
27
29
  )
28
30
  end
29
31
 
30
32
  if health_route
31
33
  map '/health' do
32
- run ->(env) { health_response_builder.new(app_name: app_name, env: env).build }
34
+ run ->(env) { health_response_builder.new(app_name:, env:).build }
33
35
  end
34
36
 
35
37
  map '/healthz' do
36
- run ->(env) { health_response_builder.new(app_name: app_name, env: env).build }
38
+ run ->(env) { health_response_builder.new(app_name:, env:).build }
37
39
  end
38
40
  end
39
41
 
@@ -43,7 +45,7 @@ module RackGraphql
43
45
  end
44
46
  elsif health_on_root_path
45
47
  map '/' do
46
- run ->(env) { health_response_builder.new(app_name: app_name, env: env).build }
48
+ run ->(env) { health_response_builder.new(app_name:, env:).build }
47
49
  end
48
50
  end
49
51
  end
@@ -13,7 +13,8 @@ module RackGraphql
13
13
  logger: nil,
14
14
  log_exception_backtrace: RackGraphql.log_exception_backtrace,
15
15
  re_raise_exceptions: false,
16
- error_status_code_map: {}
16
+ error_status_code_map: {},
17
+ request_epilogue: -> {}
17
18
  )
18
19
 
19
20
  @schema = schema
@@ -23,6 +24,7 @@ module RackGraphql
23
24
  @log_exception_backtrace = log_exception_backtrace
24
25
  @re_raise_exceptions = re_raise_exceptions
25
26
  @error_status_code_map = error_status_code_map
27
+ @request_epilogue = request_epilogue || -> {}
26
28
  end
27
29
 
28
30
  def call(env)
@@ -37,12 +39,12 @@ module RackGraphql
37
39
  context = context_handler.call(env)
38
40
 
39
41
  log("Executing with params: #{params.inspect}, operationName: #{operation_name}, variables: #{variables.inspect}")
40
- result = execute(params: params, operation_name: operation_name, variables: variables, context: context)
42
+ result = execute(params:, operation_name:, variables:, context:)
41
43
  status_code = response_status(result)
42
44
 
43
45
  [
44
46
  status_code,
45
- response_headers(result, status_code: status_code),
47
+ response_headers(result, status_code:),
46
48
  [response_body(result)]
47
49
  ]
48
50
  rescue AmbiguousParamError => e
@@ -75,14 +77,14 @@ module RackGraphql
75
77
  [Oj.dump('errors' => [exception_hash(e)])]
76
78
  ]
77
79
  ensure
78
- ActiveRecord::Base.connection_handler.flush_idle_connections!(:all) if defined?(ActiveRecord::Base)
79
- ActiveRecord::Base.connection_handler.clear_active_connections!(:all) if defined?(ActiveRecord::Base)
80
+ request_epilogue.call
80
81
  end
81
82
 
82
83
  private
83
84
 
84
85
  attr_reader :schema, :app_name, :logger, :context_handler,
85
- :log_exception_backtrace, :error_status_code_map, :re_raise_exceptions
86
+ :log_exception_backtrace, :error_status_code_map,
87
+ :re_raise_exceptions, :request_epilogue
86
88
 
87
89
  def post_request?(env)
88
90
  env['REQUEST_METHOD'] == 'POST'
@@ -119,14 +121,14 @@ module RackGraphql
119
121
 
120
122
  def execute(params:, operation_name:, variables:, context:)
121
123
  if valid_multiplex?(params)
122
- execute_multi(params['_json'], operation_name: operation_name, variables: variables, context: context)
124
+ execute_multi(params['_json'], operation_name:, variables:, context:)
123
125
  else
124
- execute_single(params['query'], operation_name: operation_name, variables: variables, context: context)
126
+ execute_single(params['query'], operation_name:, variables:, context:)
125
127
  end
126
128
  end
127
129
 
128
130
  def execute_single(query, operation_name:, variables:, context:)
129
- schema.execute(query, operation_name: operation_name, variables: variables, context: context)
131
+ schema.execute(query, operation_name:, variables:, context:)
130
132
  end
131
133
 
132
134
  def valid_multiplex?(params)
@@ -137,9 +139,9 @@ module RackGraphql
137
139
  queries = queries_params.map do |param|
138
140
  {
139
141
  query: param['query'],
140
- operation_name: operation_name,
141
- variables: variables,
142
- context: context
142
+ operation_name:,
143
+ variables:,
144
+ context:
143
145
  }
144
146
  end
145
147
 
@@ -1,3 +1,3 @@
1
1
  module RackGraphql
2
- VERSION = '3.3.0.beta'.freeze
2
+ VERSION = '3.3.0'.freeze
3
3
  end
data/rack-graphql.gemspec CHANGED
@@ -24,7 +24,7 @@ Gem::Specification.new do |spec|
24
24
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
25
25
  spec.require_paths = ['lib']
26
26
 
27
- spec.required_ruby_version = '>= 3.0'
27
+ spec.required_ruby_version = '>= 3.1'
28
28
 
29
29
  spec.add_dependency 'graphql', '~> 2.0'
30
30
  spec.add_dependency 'oj'
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rack-graphql
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.3.0.beta
4
+ version: 3.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Krzysztof Knapik
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2023-11-11 00:00:00.000000000 Z
11
+ date: 2023-11-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: graphql
@@ -101,14 +101,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
101
101
  requirements:
102
102
  - - ">="
103
103
  - !ruby/object:Gem::Version
104
- version: '3.0'
104
+ version: '3.1'
105
105
  required_rubygems_version: !ruby/object:Gem::Requirement
106
106
  requirements:
107
- - - ">"
107
+ - - ">="
108
108
  - !ruby/object:Gem::Version
109
- version: 1.3.1
109
+ version: '0'
110
110
  requirements: []
111
- rubygems_version: 3.4.21
111
+ rubygems_version: 3.4.22
112
112
  signing_key:
113
113
  specification_version: 4
114
114
  summary: Rack middleware implementing graphql endpoint.