rage-rb 1.19.1 → 1.19.2

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: 80ca2fffb3bfe313c4be9218461d8346872ea1384472e74ed0236ece99288cfa
4
- data.tar.gz: e516241ce7ffa73973b22e4abffeeb40aa0cba342d3566e3517549de979dddf6
3
+ metadata.gz: 9c49338e5b69de7d3c5667af08785441a4988710da64e84946023a660cc31560
4
+ data.tar.gz: 841f4c508fb3d0739fd912967d370f5b40e69dbe8089727ea8cc56b123abd9ff
5
5
  SHA512:
6
- metadata.gz: 5b3ea8087b89085a05946a6efd296d3d0bae2f40184356b41d17a49f62a1ad348a0ee4d0295694e6de845465ea004d9d2fb710e0d04316c132533952d9164fae
7
- data.tar.gz: 8bf64fcb40ed0beccc1f975bec376ebeeadfe84e815e10e801b69ab8820d1ddbaf8b6c87bb3bcbab04e421376b963ee905bfcf13a44443c5391a3b3fb73e30d7
6
+ metadata.gz: 73c04963af90446e29b52564020c42048735a3df8a17e071dd744f139094e68a64cabf66396433b05dd1cd51fa1b91374fe06133754b2d802171641cf2f44956
7
+ data.tar.gz: d7561754ef307415e7d848e9ac0fc2731c03281285664eafd3c2865ebc7234bb03826c22cb803e05d48aaa3c4fce05d568a13b199f4d5ee5eb8d2613ba13c4b9
data/CHANGELOG.md CHANGED
@@ -1,5 +1,11 @@
1
1
  ## [Unreleased]
2
2
 
3
+ ## [1.19.2] - 2025-01-06
4
+
5
+ ### Changed
6
+
7
+ - Compatibility with Rack 3 (#193).
8
+
3
9
  ## [1.19.1] - 2025-12-26
4
10
 
5
11
  ### Changed
@@ -47,7 +47,7 @@ module Rage::Cable
47
47
  env["rack.upgrade"] = handler
48
48
  accept_response
49
49
  else
50
- [426, { "Connection" => "Upgrade", "Upgrade" => "websocket" }, []]
50
+ [426, { "connection" => "upgrade", "upgrade" => "websocket" }, []]
51
51
  end
52
52
  end
53
53
 
@@ -585,7 +585,7 @@ class RageController::API
585
585
 
586
586
  # Render an HTTP header requesting the client to send a Bearer token for authentication.
587
587
  def request_http_token_authentication
588
- headers["Www-Authenticate"] = "Token"
588
+ headers["www-authenticate"] = "Token"
589
589
  render plain: "HTTP Token: Access denied.", status: 401
590
590
  end
591
591
 
data/lib/rage/cookies.rb CHANGED
@@ -131,12 +131,8 @@ class Rage::Cookies
131
131
  # @param path [String]
132
132
  # @param domain [String]
133
133
  def delete(key, path: "/", domain: nil)
134
- @headers.compare_by_identity
135
-
136
134
  @request_cookies[key] = nil
137
- @headers[set_cookie_key(key)] = Rack::Utils.add_cookie_to_header(nil, key, {
138
- value: "", expires: Time.at(0), path: path, domain: domain
139
- })
135
+ Rack::Utils.delete_cookie_header!(@headers, key, { path: path, domain: domain })
140
136
  end
141
137
 
142
138
  # Returns a jar that'll automatically encrypt cookie values before sending them to the client and will decrypt them
@@ -174,19 +170,17 @@ class Rage::Cookies
174
170
  # @example
175
171
  # cookie[:user_id] = { value: current_user.id, httponly: true, secure: true }
176
172
  def []=(key, value)
177
- @headers.compare_by_identity
178
-
179
173
  unless value.is_a?(Hash)
180
174
  serialized_value = @jar.dump(value)
181
175
  @request_cookies[key] = serialized_value
182
- @headers[set_cookie_key(key)] = Rack::Utils.add_cookie_to_header(nil, key, { value: serialized_value, expires: @expires })
176
+ Rack::Utils.set_cookie_header!(@headers, key, { value: serialized_value, expires: @expires })
183
177
  return
184
178
  end
185
179
 
186
180
  if (domain = value[:domain])
187
181
  host = @env["HTTP_HOST"]
188
182
 
189
- _domain = if domain.is_a?(String)
183
+ processed_domain = if domain.is_a?(String)
190
184
  domain
191
185
  elsif domain == :all
192
186
  DomainName(host).domain
@@ -196,18 +190,13 @@ class Rage::Cookies
196
190
  end
197
191
 
198
192
  serialized_value = @jar.dump(value[:value])
199
- cookie = Rack::Utils.add_cookie_to_header(nil, key, {
200
- path: value[:path],
201
- secure: value[:secure],
202
- expires: value[:expires] || @expires,
203
- httponly: value[:httponly],
204
- same_site: value[:same_site],
193
+ Rack::Utils.set_cookie_header!(@headers, key, {
194
+ **value,
205
195
  value: serialized_value,
206
- domain: _domain
196
+ domain: processed_domain,
197
+ expires: value[:expires] || @expires
207
198
  })
208
-
209
199
  @request_cookies[key] = serialized_value
210
- @headers[set_cookie_key(key)] = cookie
211
200
  end
212
201
 
213
202
  def inspect
@@ -240,11 +229,6 @@ class Rage::Cookies
240
229
  @request_cookies
241
230
  end
242
231
 
243
- def set_cookie_key(key)
244
- @set_cookie_keys ||= Hash.new { |hash, key| hash[key] = "Set-Cookie".dup }
245
- @set_cookie_keys[key]
246
- end
247
-
248
232
  protected
249
233
 
250
234
  attr_writer :jar, :expires
@@ -14,20 +14,20 @@ class Rage::Cors
14
14
  end
15
15
 
16
16
  response = @app.call(env)
17
- response[1]["Access-Control-Allow-Credentials"] = @allow_credentials if @allow_credentials
18
- response[1]["Access-Control-Expose-Headers"] = @expose_headers if @expose_headers
17
+ response[1]["access-control-allow-credentials"] = @allow_credentials if @allow_credentials
18
+ response[1]["access-control-expose-headers"] = @expose_headers if @expose_headers
19
19
 
20
20
  response
21
21
  ensure
22
22
  if !$! && (origin = @cors_check.call(env))
23
23
  headers = response[1]
24
- headers["Access-Control-Allow-Origin"] = origin
24
+ headers["access-control-allow-origin"] = origin
25
25
  if @origins != "*"
26
- vary = headers["Vary"]
26
+ vary = headers["vary"]
27
27
  if vary.nil?
28
- headers["Vary"] = "Origin"
28
+ headers["vary"] = "Origin"
29
29
  elsif vary != "Origin"
30
- headers["Vary"] += ", Origin"
30
+ headers["vary"] += ", Origin"
31
31
  end
32
32
  end
33
33
  end
@@ -98,21 +98,21 @@ class Rage::Cors
98
98
 
99
99
  def create_headers
100
100
  headers = {
101
- "Access-Control-Allow-Origin" => "",
102
- "Access-Control-Allow-Methods" => @methods
101
+ "access-control-allow-origin" => "",
102
+ "access-control-allow-methods" => @methods
103
103
  }
104
104
 
105
105
  if @allow_headers
106
- headers["Access-Control-Allow-Headers"] = @allow_headers
106
+ headers["access-control-allow-headers"] = @allow_headers
107
107
  end
108
108
  if @expose_headers
109
- headers["Access-Control-Expose-Headers"] = @expose_headers
109
+ headers["access-control-expose-headers"] = @expose_headers
110
110
  end
111
111
  if @max_age
112
- headers["Access-Control-Max-Age"] = @max_age
112
+ headers["access-control-max-age"] = @max_age
113
113
  end
114
114
  if @allow_credentials
115
- headers["Access-Control-Allow-Credentials"] = @allow_credentials
115
+ headers["access-control-allow-credentials"] = @allow_credentials
116
116
  end
117
117
 
118
118
  headers
@@ -24,7 +24,7 @@ class Rage::RequestId
24
24
  def call(env)
25
25
  env["rage.request_id"] = validate_external_request_id(env["HTTP_X_REQUEST_ID"])
26
26
  response = @app.call(env)
27
- response[1]["X-Request-Id"] = env["rage.request_id"]
27
+ response[1]["x-request-id"] = env["rage.request_id"]
28
28
 
29
29
  response
30
30
  end
@@ -48,13 +48,13 @@ module Rage::OpenAPI
48
48
  spec_url = "#{scheme}://#{host}#{path}/json"
49
49
  page = ERB.new(File.read("#{__dir__}/index.html.erb")).result(binding)
50
50
 
51
- [200, { "Content-Type" => "text/html; charset=UTF-8" }, [page]]
51
+ [200, { "content-type" => "text/html; charset=UTF-8" }, [page]]
52
52
  end
53
53
  end
54
54
 
55
55
  json_app = ->(env) do
56
56
  spec = (__data_cache[[:spec, namespace]] ||= build(namespace:).to_json)
57
- [200, { "Content-Type" => "application/json" }, [spec]]
57
+ [200, { "content-type" => "application/json" }, [spec]]
58
58
  end
59
59
 
60
60
  app = ->(env) do
data/lib/rage/response.rb CHANGED
@@ -4,8 +4,8 @@ require "digest"
4
4
  require "time"
5
5
 
6
6
  class Rage::Response
7
- ETAG_HEADER = "ETag"
8
- LAST_MODIFIED_HEADER = "Last-Modified"
7
+ ETAG_HEADER = "etag"
8
+ LAST_MODIFIED_HEADER = "last-modified"
9
9
 
10
10
  # @private
11
11
  def initialize(headers, body)
data/lib/rage/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Rage
4
- VERSION = "1.19.1"
4
+ VERSION = "1.19.2"
5
5
  end
data/rage.gemspec CHANGED
@@ -28,7 +28,7 @@ Gem::Specification.new do |spec|
28
28
  spec.require_paths = ["lib"]
29
29
 
30
30
  spec.add_dependency "thor", "~> 1.0"
31
- spec.add_dependency "rack", "~> 2.0"
31
+ spec.add_dependency "rack", "< 4"
32
32
  spec.add_dependency "rage-iodine", "~> 4.3"
33
33
  spec.add_dependency "zeitwerk", "~> 2.6"
34
34
  spec.add_dependency "rack-test", "~> 2.1"
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rage-rb
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.19.1
4
+ version: 1.19.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Roman Samoilov
8
8
  bindir: exe
9
9
  cert_chain: []
10
- date: 2025-12-26 00:00:00.000000000 Z
10
+ date: 2026-01-06 00:00:00.000000000 Z
11
11
  dependencies:
12
12
  - !ruby/object:Gem::Dependency
13
13
  name: thor
@@ -27,16 +27,16 @@ dependencies:
27
27
  name: rack
28
28
  requirement: !ruby/object:Gem::Requirement
29
29
  requirements:
30
- - - "~>"
30
+ - - "<"
31
31
  - !ruby/object:Gem::Version
32
- version: '2.0'
32
+ version: '4'
33
33
  type: :runtime
34
34
  prerelease: false
35
35
  version_requirements: !ruby/object:Gem::Requirement
36
36
  requirements:
37
- - - "~>"
37
+ - - "<"
38
38
  - !ruby/object:Gem::Version
39
- version: '2.0'
39
+ version: '4'
40
40
  - !ruby/object:Gem::Dependency
41
41
  name: rage-iodine
42
42
  requirement: !ruby/object:Gem::Requirement