hanami-router 2.3.0.beta1 → 2.3.0.beta2

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: dd6e74eeead3378e5b8697f4a3d6ff3883a71c140ace0699a9bb30aa2b3f303d
4
- data.tar.gz: dd4a259ce71090ed517152b0203896274c25d893afaf68768a118c1c77300c53
3
+ metadata.gz: 5c9e51f6dddcf337224f949ca5f28c79b82702f6743a9aef5fbecdfebd5efcb9
4
+ data.tar.gz: 3d02dfc438dac3cd1f07a62934c0c81059db209123a1a0f7a639c30885013a63
5
5
  SHA512:
6
- metadata.gz: cd35252d98f215ec28a0676a3a36db818af56b78d3e46b84f2e02bff14a9e49422c6fd89b4a3f6313929f3cbaedd2f193b9f35dd15b7c03b5a1252405f424e8d
7
- data.tar.gz: 23f275b9f2fbd71d68453e69c00983f9729e98fd3b16e3b51866bfb27b73dab0678d7c204e7ba63d6b9d24dc5a5f1e1f91b88567ee0ec315c5bc1fd2669ae9fb
6
+ metadata.gz: 27585ee48b5a0070bf60044676b7c6473093b139c6d92a34bc204df51e87acb643933e9cc92a38ace8ad31da701f58db480dad0da288bf21270376613e192a1f
7
+ data.tar.gz: 6e170d49fd689cad6fe447cf8bb1e93c76e50254751a108c85bf8b0c07c269673aa617f99a87197a1d7d89b169297ca6b752bea994c118663613b431535ba601
data/CHANGELOG.md CHANGED
@@ -2,6 +2,13 @@
2
2
 
3
3
  Rack compatible HTTP router for Ruby
4
4
 
5
+ ## v2.3.0.beta2 - 2025-10-17
6
+
7
+ ### Changed
8
+
9
+ - [Kyle Plump] Improve runtime performance by building mustermann matchers when routes are first built. This corrects a performance regression introduced with the fixes in v2.2.0. (#279)
10
+ - Drop support for Ruby 3.1
11
+
5
12
  ## v2.3.0.beta1 - 2025-10-03
6
13
 
7
14
  ### Changed
@@ -18,7 +18,7 @@ Gem::Specification.new do |spec|
18
18
  spec.executables = []
19
19
  spec.require_paths = ["lib"]
20
20
  spec.metadata["rubygems_mfa_required"] = "true"
21
- spec.required_ruby_version = ">= 3.1"
21
+ spec.required_ruby_version = ">= 3.2"
22
22
 
23
23
  spec.add_dependency "rack", ">= 2.0"
24
24
  spec.add_dependency "mustermann", "~> 3.0"
@@ -9,15 +9,14 @@ module Hanami
9
9
  #
10
10
  # @api private
11
11
  # @since 2.2.0
12
- attr_reader :to, :params
12
+ attr_reader :to, :params, :matcher
13
13
 
14
14
  # @api private
15
15
  # @since 2.2.0
16
16
  def initialize(route, to, constraints)
17
- @route = route
18
17
  @to = to
19
- @constraints = constraints
20
18
  @params = nil
19
+ @matcher = Mustermann.new(route, type: :rails, version: "5.0", capture: constraints)
21
20
  end
22
21
 
23
22
  # @api private
@@ -29,14 +28,6 @@ module Hanami
29
28
 
30
29
  match
31
30
  end
32
-
33
- private
34
-
35
- # @api private
36
- # @since 2.2.0
37
- def matcher
38
- @matcher ||= Mustermann.new(@route, type: :rails, version: "5.0", capture: @constraints)
39
- end
40
31
  end
41
32
  end
42
33
  end
@@ -17,6 +17,7 @@ module Hanami
17
17
  # @since 2.0.0
18
18
  def initialize
19
19
  @root = Node.new
20
+ @segments_map = {}
20
21
  end
21
22
 
22
23
  # @api private
@@ -47,15 +48,18 @@ module Hanami
47
48
 
48
49
  # @api private
49
50
  # @since 2.0.0
50
- SEGMENT_SEPARATOR = /\//
51
+ SEGMENT_SEPARATOR = "/"
51
52
  private_constant :SEGMENT_SEPARATOR
52
53
 
53
54
  # @api private
54
55
  # @since 2.2.0
55
56
  def segments_from(path)
56
- _, *segments = path.split(SEGMENT_SEPARATOR)
57
-
58
- segments
57
+ if @segments_map[path]
58
+ @segments_map[path]
59
+ else
60
+ _, *segments = path.split(SEGMENT_SEPARATOR)
61
+ @segments_map[path] = segments
62
+ end
59
63
  end
60
64
  end
61
65
  end
@@ -8,6 +8,6 @@ module Hanami
8
8
  #
9
9
  # @since 0.1.0
10
10
  # @api public
11
- VERSION = "2.3.0.beta1"
11
+ VERSION = "2.3.0.beta2"
12
12
  end
13
13
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: hanami-router
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.3.0.beta1
4
+ version: 2.3.0.beta2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Luca Guidi
@@ -209,7 +209,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
209
209
  requirements:
210
210
  - - ">="
211
211
  - !ruby/object:Gem::Version
212
- version: '3.1'
212
+ version: '3.2'
213
213
  required_rubygems_version: !ruby/object:Gem::Requirement
214
214
  requirements:
215
215
  - - ">="