acfs 2.1.0 → 2.2.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.
Files changed (330) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +22 -0
  3. data/README.md +1 -1
  4. data/acfs.gemspec +1 -1
  5. data/lib/acfs/location.rb +2 -2
  6. data/lib/acfs/middleware/json.rb +3 -3
  7. data/lib/acfs/request.rb +1 -0
  8. data/lib/acfs/resource/attributes.rb +1 -1
  9. data/lib/acfs/stub.rb +1 -1
  10. data/lib/acfs/version.rb +2 -2
  11. data/lib/acfs.rb +3 -4
  12. data/spec/acfs/collection_spec.rb +16 -10
  13. data/spec/acfs/global_spec.rb +2 -2
  14. data/spec/acfs/middleware/json_spec.rb +16 -0
  15. data/spec/acfs/operation_spec.rb +2 -2
  16. data/spec/acfs/request/callbacks_spec.rb +2 -2
  17. data/spec/acfs/resource/locatable_spec.rb +5 -11
  18. data/spec/acfs/resource/query_methods_spec.rb +1 -1
  19. data/spec/acfs/resource/validation_spec.rb +3 -4
  20. data/spec/acfs/runner_spec.rb +6 -6
  21. data/spec/acfs/stub_spec.rb +6 -4
  22. data/spec/acfs_spec.rb +4 -4
  23. data/vendor/bundle/ruby/4.0.0/bundler/gems/rubocop-config-2b861962124a/README.md +23 -0
  24. data/vendor/bundle/ruby/{3.4.0/bundler/gems/rubocop-config-67802c9d1826 → 4.0.0/bundler/gems/rubocop-config-2b861962124a}/rubocop-config.gemspec +11 -11
  25. data/vendor/bundle/ruby/4.0.0/gems/actionpack-8.1.3/CHANGELOG.md +514 -0
  26. data/vendor/bundle/ruby/{3.4.0/gems/actionpack-8.0.1 → 4.0.0/gems/actionpack-8.1.3}/README.rdoc +1 -1
  27. data/vendor/bundle/ruby/4.0.0/gems/actionview-8.1.3/CHANGELOG.md +191 -0
  28. data/vendor/bundle/ruby/{3.4.0/gems/actionview-8.0.1 → 4.0.0/gems/actionview-8.1.3}/README.rdoc +1 -1
  29. data/vendor/bundle/ruby/4.0.0/gems/activemodel-8.1.3/CHANGELOG.md +68 -0
  30. data/vendor/bundle/ruby/{3.4.0/gems/activemodel-8.0.1 → 4.0.0/gems/activemodel-8.1.3}/README.rdoc +1 -1
  31. data/vendor/bundle/ruby/4.0.0/gems/activesupport-8.1.3/CHANGELOG.md +561 -0
  32. data/vendor/bundle/ruby/{3.4.0/gems/activesupport-8.0.1 → 4.0.0/gems/activesupport-8.1.3}/README.rdoc +1 -1
  33. data/vendor/bundle/ruby/{3.4.0/gems/addressable-2.8.7 → 4.0.0/gems/addressable-2.9.0}/CHANGELOG.md +71 -46
  34. data/vendor/bundle/ruby/{3.4.0/gems/addressable-2.8.7 → 4.0.0/gems/addressable-2.9.0}/README.md +6 -6
  35. data/vendor/bundle/ruby/4.0.0/gems/ast-2.4.3/LICENSE.MIT +20 -0
  36. data/vendor/bundle/ruby/4.0.0/gems/ast-2.4.3/README.YARD.md +12 -0
  37. data/vendor/bundle/ruby/{3.4.0/gems/bigdecimal-3.1.9 → 4.0.0/gems/bigdecimal-4.1.2}/bigdecimal.gemspec +6 -1
  38. data/vendor/bundle/ruby/{3.4.0/gems/concurrent-ruby-1.3.5 → 4.0.0/gems/concurrent-ruby-1.3.7}/CHANGELOG.md +12 -0
  39. data/vendor/bundle/ruby/{3.4.0/gems/concurrent-ruby-1.3.5 → 4.0.0/gems/concurrent-ruby-1.3.7}/README.md +4 -2
  40. data/vendor/bundle/ruby/{3.4.0/gems/connection_pool-2.5.0 → 4.0.0/gems/connection_pool-3.0.2}/README.md +49 -34
  41. data/vendor/bundle/ruby/4.0.0/gems/connection_pool-3.0.2/connection_pool.gemspec +35 -0
  42. data/vendor/bundle/ruby/{3.4.0/gems/diff-lcs-1.6.0 → 4.0.0/gems/diff-lcs-1.6.2}/CHANGELOG.md +27 -0
  43. data/vendor/bundle/ruby/{3.4.0/gems/diff-lcs-1.6.0 → 4.0.0/gems/diff-lcs-1.6.2}/README.md +1 -1
  44. data/vendor/bundle/ruby/4.0.0/gems/docile-1.4.1/LICENSE +21 -0
  45. data/vendor/bundle/ruby/4.0.0/gems/docile-1.4.1/README.md +409 -0
  46. data/vendor/bundle/ruby/4.0.0/gems/docile-1.4.1/docile.gemspec +36 -0
  47. data/vendor/bundle/ruby/{3.4.0/gems/drb-2.2.1 → 4.0.0/gems/drb-2.2.3}/drb.gemspec +2 -1
  48. data/vendor/bundle/ruby/{3.4.0/gems/ethon-0.16.0 → 4.0.0/gems/ethon-0.18.0}/CHANGELOG.md +43 -1
  49. data/vendor/bundle/ruby/{3.4.0/gems/ethon-0.16.0 → 4.0.0/gems/ethon-0.18.0}/README.md +1 -1
  50. data/vendor/bundle/ruby/4.0.0/gems/ethon-0.18.0/ethon.gemspec +37 -0
  51. data/vendor/bundle/ruby/{3.4.0/gems/ffi-1.17.1-x86_64-linux-gnu → 4.0.0/gems/ffi-1.17.4-x86_64-linux-gnu}/CHANGELOG.md +42 -0
  52. data/vendor/bundle/ruby/{3.4.0/gems/ffi-1.17.1-x86_64-linux-gnu → 4.0.0/gems/ffi-1.17.4-x86_64-linux-gnu}/README.md +1 -0
  53. data/vendor/bundle/ruby/{3.4.0/gems/ffi-1.17.1-x86_64-linux-gnu → 4.0.0/gems/ffi-1.17.4-x86_64-linux-gnu}/ffi.gemspec +7 -6
  54. data/vendor/bundle/ruby/{3.4.0/gems/hashdiff-1.1.2 → 4.0.0/gems/hashdiff-1.2.1}/README.md +26 -1
  55. data/vendor/bundle/ruby/4.0.0/gems/hashdiff-1.2.1/changelog.md +127 -0
  56. data/vendor/bundle/ruby/{3.4.0/gems/i18n-1.14.7 → 4.0.0/gems/i18n-1.15.2}/README.md +13 -1
  57. data/vendor/bundle/ruby/{3.4.0/gems/json-2.10.1 → 4.0.0/gems/json-2.19.9}/README.md +43 -1
  58. data/vendor/bundle/ruby/{3.4.0/gems/json-2.10.1 → 4.0.0/gems/json-2.19.9}/json.gemspec +2 -3
  59. data/vendor/bundle/ruby/4.0.0/gems/language_server-protocol-3.17.0.5/LICENSE.txt +21 -0
  60. data/vendor/bundle/ruby/4.0.0/gems/language_server-protocol-3.17.0.5/README.md +88 -0
  61. data/vendor/bundle/ruby/4.0.0/gems/lint_roller-1.1.0/CHANGELOG.md +15 -0
  62. data/vendor/bundle/ruby/4.0.0/gems/lint_roller-1.1.0/LICENSE.txt +21 -0
  63. data/vendor/bundle/ruby/4.0.0/gems/lint_roller-1.1.0/README.md +173 -0
  64. data/vendor/bundle/ruby/{3.4.0/gems/loofah-2.24.0 → 4.0.0/gems/loofah-2.25.1}/CHANGELOG.md +17 -0
  65. data/vendor/bundle/ruby/{3.4.0/gems/minitest-5.25.4 → 4.0.0/gems/minitest-6.0.6}/README.rdoc +33 -105
  66. data/vendor/bundle/ruby/4.0.0/gems/msgpack-1.8.3/ChangeLog +383 -0
  67. data/vendor/bundle/ruby/4.0.0/gems/msgpack-1.8.3/LICENSE +177 -0
  68. data/vendor/bundle/ruby/4.0.0/gems/msgpack-1.8.3/README.md +302 -0
  69. data/vendor/bundle/ruby/4.0.0/gems/msgpack-1.8.3/msgpack.gemspec +41 -0
  70. data/vendor/bundle/ruby/4.0.0/gems/multi_json-1.21.1/LICENSE.md +20 -0
  71. data/vendor/bundle/ruby/4.0.0/gems/multi_json-1.21.1/README.md +281 -0
  72. data/vendor/bundle/ruby/{3.4.0/gems/nokogiri-1.18.2-x86_64-linux-gnu → 4.0.0/gems/nokogiri-1.19.4-x86_64-linux-gnu}/LICENSE-DEPENDENCIES.md +187 -0
  73. data/vendor/bundle/ruby/{3.4.0/gems/nokogiri-1.18.2-x86_64-linux-gnu → 4.0.0/gems/nokogiri-1.19.4-x86_64-linux-gnu}/README.md +18 -3
  74. data/vendor/bundle/ruby/4.0.0/gems/opentelemetry-api-1.10.0/CHANGELOG.md +219 -0
  75. data/vendor/bundle/ruby/{3.4.0/gems/opentelemetry-api-1.4.0 → 4.0.0/gems/opentelemetry-api-1.10.0}/README.md +1 -2
  76. data/vendor/bundle/ruby/4.0.0/gems/opentelemetry-common-0.25.0/CHANGELOG.md +110 -0
  77. data/vendor/bundle/ruby/{3.4.0/gems/opentelemetry-common-0.21.0 → 4.0.0/gems/opentelemetry-common-0.25.0}/README.md +1 -1
  78. data/vendor/bundle/ruby/4.0.0/gems/parallel-2.1.0/MIT-LICENSE.txt +20 -0
  79. data/vendor/bundle/ruby/{3.4.0/gems/rspec-collection_matchers-1.2.1 → 4.0.0/gems/parser-3.3.11.1}/LICENSE.txt +4 -5
  80. data/vendor/bundle/ruby/4.0.0/gems/parser-3.3.11.1/parser.gemspec +43 -0
  81. data/vendor/bundle/ruby/4.0.0/gems/prism-1.9.0/CHANGELOG.md +786 -0
  82. data/vendor/bundle/ruby/4.0.0/gems/prism-1.9.0/LICENSE.md +7 -0
  83. data/vendor/bundle/ruby/4.0.0/gems/prism-1.9.0/README.md +143 -0
  84. data/vendor/bundle/ruby/4.0.0/gems/prism-1.9.0/prism.gemspec +172 -0
  85. data/vendor/bundle/ruby/4.0.0/gems/public_suffix-7.0.5/CHANGELOG.md +649 -0
  86. data/vendor/bundle/ruby/{3.4.0/gems/public_suffix-6.0.1 → 4.0.0/gems/public_suffix-7.0.5}/LICENSE.txt +1 -1
  87. data/vendor/bundle/ruby/{3.4.0/gems/public_suffix-6.0.1 → 4.0.0/gems/public_suffix-7.0.5}/README.md +38 -29
  88. data/vendor/bundle/ruby/{3.4.0/gems/rack-3.1.10 → 4.0.0/gems/rack-3.2.6}/CHANGELOG.md +338 -4
  89. data/vendor/bundle/ruby/{3.4.0/gems/rack-3.1.10 → 4.0.0/gems/rack-3.2.6}/README.md +76 -20
  90. data/vendor/bundle/ruby/{3.4.0/gems/rails-dom-testing-2.2.0 → 4.0.0/gems/rails-dom-testing-2.3.0}/README.md +3 -0
  91. data/vendor/bundle/ruby/{3.4.0/gems/rails-html-sanitizer-1.6.2 → 4.0.0/gems/rails-html-sanitizer-1.7.0}/CHANGELOG.md +10 -0
  92. data/vendor/bundle/ruby/4.0.0/gems/rainbow-3.1.1/Changelog.md +101 -0
  93. data/vendor/bundle/ruby/4.0.0/gems/rainbow-3.1.1/LICENSE +20 -0
  94. data/vendor/bundle/ruby/4.0.0/gems/rainbow-3.1.1/README.markdown +227 -0
  95. data/vendor/bundle/ruby/{3.4.0/gems/rake-13.2.1 → 4.0.0/gems/rake-13.4.2}/README.rdoc +5 -5
  96. data/vendor/bundle/ruby/{3.4.0/gems/rake-13.2.1 → 4.0.0/gems/rake-13.4.2}/rake.gemspec +3 -2
  97. data/vendor/bundle/ruby/{3.4.0/gems/rake-release-1.3.0 → 4.0.0/gems/rake-release-1.4.0}/rake-release.gemspec +4 -4
  98. data/vendor/bundle/ruby/4.0.0/gems/regexp_parser-2.12.0/LICENSE +22 -0
  99. data/vendor/bundle/ruby/4.0.0/gems/regexp_parser-2.12.0/regexp_parser.gemspec +36 -0
  100. data/vendor/bundle/ruby/{3.4.0/gems/rspec-core-3.13.3 → 4.0.0/gems/rspec-core-3.13.6}/Changelog.md +24 -2
  101. data/vendor/bundle/ruby/{3.4.0/gems/rspec-expectations-3.13.3 → 4.0.0/gems/rspec-expectations-3.13.5}/Changelog.md +154 -140
  102. data/vendor/bundle/ruby/{3.4.0/gems/rspec-mocks-3.13.2 → 4.0.0/gems/rspec-mocks-3.13.8}/Changelog.md +181 -129
  103. data/vendor/bundle/ruby/{3.4.0/gems/rspec-support-3.13.2 → 4.0.0/gems/rspec-support-3.13.7}/Changelog.md +101 -65
  104. data/vendor/bundle/ruby/4.0.0/gems/rubocop-1.88.0/LICENSE.txt +20 -0
  105. data/vendor/bundle/ruby/4.0.0/gems/rubocop-1.88.0/README.md +255 -0
  106. data/vendor/bundle/ruby/4.0.0/gems/rubocop-ast-1.49.1/LICENSE.txt +20 -0
  107. data/vendor/bundle/ruby/4.0.0/gems/rubocop-ast-1.49.1/README.md +54 -0
  108. data/vendor/bundle/ruby/4.0.0/gems/rubocop-capybara-2.23.0/CHANGELOG.md +116 -0
  109. data/vendor/bundle/ruby/4.0.0/gems/rubocop-capybara-2.23.0/MIT-LICENSE.md +21 -0
  110. data/vendor/bundle/ruby/4.0.0/gems/rubocop-capybara-2.23.0/README.md +91 -0
  111. data/vendor/bundle/ruby/4.0.0/gems/rubocop-factory_bot-2.28.0/CHANGELOG.md +135 -0
  112. data/vendor/bundle/ruby/4.0.0/gems/rubocop-factory_bot-2.28.0/MIT-LICENSE.md +21 -0
  113. data/vendor/bundle/ruby/4.0.0/gems/rubocop-factory_bot-2.28.0/README.md +91 -0
  114. data/vendor/bundle/ruby/4.0.0/gems/rubocop-performance-1.26.1/LICENSE.txt +20 -0
  115. data/vendor/bundle/ruby/4.0.0/gems/rubocop-performance-1.26.1/README.md +100 -0
  116. data/vendor/bundle/ruby/4.0.0/gems/rubocop-rspec-3.10.2/CHANGELOG.md +1136 -0
  117. data/vendor/bundle/ruby/4.0.0/gems/rubocop-rspec-3.10.2/MIT-LICENSE.md +21 -0
  118. data/vendor/bundle/ruby/4.0.0/gems/rubocop-rspec-3.10.2/README.md +112 -0
  119. data/vendor/bundle/ruby/4.0.0/gems/rubocop-rspec_rails-2.32.0/CHANGELOG.md +98 -0
  120. data/vendor/bundle/ruby/4.0.0/gems/rubocop-rspec_rails-2.32.0/MIT-LICENSE.md +21 -0
  121. data/vendor/bundle/ruby/4.0.0/gems/rubocop-rspec_rails-2.32.0/README.md +93 -0
  122. data/vendor/bundle/ruby/4.0.0/gems/ruby-progressbar-1.13.0/LICENSE.txt +19 -0
  123. data/vendor/bundle/ruby/4.0.0/gems/ruby-progressbar-1.13.0/README.md +131 -0
  124. data/vendor/bundle/ruby/4.0.0/gems/simplecov-0.22.0/CHANGELOG.md +191 -0
  125. data/vendor/bundle/ruby/4.0.0/gems/simplecov-0.22.0/LICENSE +20 -0
  126. data/vendor/bundle/ruby/4.0.0/gems/simplecov-0.22.0/README.md +974 -0
  127. data/vendor/bundle/ruby/4.0.0/gems/simplecov-cobertura-3.2.0/LICENSE +202 -0
  128. data/vendor/bundle/ruby/4.0.0/gems/simplecov-cobertura-3.2.0/README.md +65 -0
  129. data/vendor/bundle/ruby/4.0.0/gems/simplecov-cobertura-3.2.0/simplecov-cobertura.gemspec +29 -0
  130. data/vendor/bundle/ruby/4.0.0/gems/simplecov-html-0.13.2/CHANGELOG.md +114 -0
  131. data/vendor/bundle/ruby/4.0.0/gems/simplecov-html-0.13.2/LICENSE +20 -0
  132. data/vendor/bundle/ruby/4.0.0/gems/simplecov-html-0.13.2/README.md +30 -0
  133. data/vendor/bundle/ruby/4.0.0/gems/simplecov_json_formatter-0.1.4/CHANGELOG.md +13 -0
  134. data/vendor/bundle/ruby/4.0.0/gems/simplecov_json_formatter-0.1.4/README.md +29 -0
  135. data/vendor/bundle/ruby/{3.4.0/gems/thor-1.3.2 → 4.0.0/gems/thor-1.5.0}/README.md +1 -2
  136. data/vendor/bundle/ruby/{3.4.0/gems/thor-1.3.2 → 4.0.0/gems/thor-1.5.0}/thor.gemspec +3 -3
  137. data/vendor/bundle/ruby/{3.4.0/gems/typhoeus-1.4.1 → 4.0.0/gems/typhoeus-1.6.0}/CHANGELOG.md +56 -1
  138. data/vendor/bundle/ruby/{3.4.0/gems/typhoeus-1.4.1 → 4.0.0/gems/typhoeus-1.6.0}/README.md +2 -2
  139. data/vendor/bundle/ruby/{3.4.0/gems/typhoeus-1.4.1 → 4.0.0/gems/typhoeus-1.6.0}/typhoeus.gemspec +14 -4
  140. data/vendor/bundle/ruby/4.0.0/gems/unicode-display_width-3.2.0/CHANGELOG.md +299 -0
  141. data/vendor/bundle/ruby/4.0.0/gems/unicode-display_width-3.2.0/MIT-LICENSE.txt +22 -0
  142. data/vendor/bundle/ruby/4.0.0/gems/unicode-display_width-3.2.0/README.md +194 -0
  143. data/vendor/bundle/ruby/4.0.0/gems/unicode-emoji-4.2.0/CHANGELOG.md +202 -0
  144. data/vendor/bundle/ruby/4.0.0/gems/unicode-emoji-4.2.0/MIT-LICENSE.txt +20 -0
  145. data/vendor/bundle/ruby/4.0.0/gems/unicode-emoji-4.2.0/README.md +205 -0
  146. data/vendor/bundle/ruby/4.0.0/gems/unicode-emoji-4.2.0/unicode-emoji.gemspec +22 -0
  147. data/vendor/bundle/ruby/{3.4.0/gems/uri-1.0.2 → 4.0.0/gems/uri-1.1.1}/README.md +1 -1
  148. data/vendor/bundle/ruby/{3.4.0/gems/webmock-3.25.0 → 4.0.0/gems/webmock-3.26.2}/CHANGELOG.md +38 -0
  149. data/vendor/bundle/ruby/{3.4.0/gems/webmock-3.25.0 → 4.0.0/gems/webmock-3.26.2}/README.md +6 -0
  150. data/vendor/bundle/ruby/{3.4.0/specifications/actionpack-8.0.1.gemspec → 4.0.0/specifications/actionpack-8.1.3.gemspec} +9 -9
  151. data/vendor/bundle/ruby/{3.4.0/specifications/actionview-8.0.1.gemspec → 4.0.0/specifications/actionview-8.1.3.gemspec} +9 -9
  152. data/vendor/bundle/ruby/{3.4.0/specifications/activemodel-8.0.1.gemspec → 4.0.0/specifications/activemodel-8.1.3.gemspec} +7 -7
  153. data/vendor/bundle/ruby/{3.4.0/specifications/activesupport-8.0.1.gemspec → 4.0.0/specifications/activesupport-8.1.3.gemspec} +7 -7
  154. data/vendor/bundle/ruby/{3.4.0/specifications/addressable-2.8.7.gemspec → 4.0.0/specifications/addressable-2.9.0.gemspec} +7 -8
  155. data/vendor/bundle/ruby/{3.4.0 → 4.0.0}/specifications/appraisal-2.5.0.gemspec +1 -1
  156. data/vendor/bundle/ruby/4.0.0/specifications/ast-2.4.3.gemspec +29 -0
  157. data/vendor/bundle/ruby/{3.4.0/specifications/base64-0.2.0.gemspec → 4.0.0/specifications/base64-0.3.0.gemspec} +6 -6
  158. data/vendor/bundle/ruby/{3.4.0/specifications/bigdecimal-3.1.9.gemspec → 4.0.0/specifications/bigdecimal-4.1.2.gemspec} +6 -6
  159. data/vendor/bundle/ruby/{3.4.0 → 4.0.0}/specifications/builder-3.3.0.gemspec +1 -1
  160. data/vendor/bundle/ruby/{3.4.0/specifications/concurrent-ruby-1.3.5.gemspec → 4.0.0/specifications/concurrent-ruby-1.3.7.gemspec} +6 -6
  161. data/vendor/bundle/ruby/{3.4.0/specifications/connection_pool-2.5.0.gemspec → 4.0.0/specifications/connection_pool-3.0.2.gemspec} +8 -8
  162. data/vendor/bundle/ruby/{3.4.0/specifications/crack-1.0.0.gemspec → 4.0.0/specifications/crack-1.0.1.gemspec} +4 -4
  163. data/vendor/bundle/ruby/{3.4.0 → 4.0.0}/specifications/crass-1.0.6.gemspec +1 -1
  164. data/vendor/bundle/ruby/{3.4.0/specifications/diff-lcs-1.6.0.gemspec → 4.0.0/specifications/diff-lcs-1.6.2.gemspec} +11 -14
  165. data/vendor/bundle/ruby/4.0.0/specifications/docile-1.4.1.gemspec +22 -0
  166. data/vendor/bundle/ruby/{3.4.0/specifications/drb-2.2.1.gemspec → 4.0.0/specifications/drb-2.2.3.gemspec} +6 -6
  167. data/vendor/bundle/ruby/{3.4.0 → 4.0.0}/specifications/erubi-1.13.1.gemspec +1 -1
  168. data/vendor/bundle/ruby/4.0.0/specifications/ethon-0.18.0.gemspec +27 -0
  169. data/vendor/bundle/ruby/{3.4.0/specifications/ffi-1.17.1-x86_64-linux-gnu.gemspec → 4.0.0/specifications/ffi-1.17.4-x86_64-linux-gnu.gemspec} +7 -14
  170. data/vendor/bundle/ruby/{3.4.0/specifications/hashdiff-1.1.2.gemspec → 4.0.0/specifications/hashdiff-1.2.1.gemspec} +4 -4
  171. data/vendor/bundle/ruby/{3.4.0/specifications/i18n-1.14.7.gemspec → 4.0.0/specifications/i18n-1.15.2.gemspec} +6 -6
  172. data/vendor/bundle/ruby/{3.4.0/specifications/json-2.10.1.gemspec → 4.0.0/specifications/json-2.19.9.gemspec} +0 -0
  173. data/vendor/bundle/ruby/4.0.0/specifications/language_server-protocol-3.17.0.5.gemspec +31 -0
  174. data/vendor/bundle/ruby/4.0.0/specifications/lint_roller-1.1.0.gemspec +22 -0
  175. data/vendor/bundle/ruby/{3.4.0/specifications/logger-1.6.6.gemspec → 4.0.0/specifications/logger-1.7.0.gemspec} +4 -4
  176. data/vendor/bundle/ruby/{3.4.0/specifications/loofah-2.24.0.gemspec → 4.0.0/specifications/loofah-2.25.1.gemspec} +5 -5
  177. data/vendor/bundle/ruby/4.0.0/specifications/minitest-6.0.6.gemspec +35 -0
  178. data/vendor/bundle/ruby/4.0.0/specifications/msgpack-1.8.3.gemspec +36 -0
  179. data/vendor/bundle/ruby/4.0.0/specifications/multi_json-1.21.1.gemspec +22 -0
  180. data/vendor/bundle/ruby/{3.4.0/specifications/nokogiri-1.18.2-x86_64-linux-gnu.gemspec → 4.0.0/specifications/nokogiri-1.19.4-x86_64-linux-gnu.gemspec} +7 -7
  181. data/vendor/bundle/ruby/{3.4.0/specifications/opentelemetry-api-1.4.0.gemspec → 4.0.0/specifications/opentelemetry-api-1.10.0.gemspec} +11 -11
  182. data/vendor/bundle/ruby/{3.4.0/specifications/opentelemetry-common-0.21.0.gemspec → 4.0.0/specifications/opentelemetry-common-0.25.0.gemspec} +9 -10
  183. data/vendor/bundle/ruby/4.0.0/specifications/parallel-2.1.0.gemspec +21 -0
  184. data/vendor/bundle/ruby/4.0.0/specifications/parser-3.3.11.1.gemspec +37 -0
  185. data/vendor/bundle/ruby/4.0.0/specifications/prism-1.9.0.gemspec +24 -0
  186. data/vendor/bundle/ruby/{3.4.0/specifications/public_suffix-6.0.1.gemspec → 4.0.0/specifications/public_suffix-7.0.5.gemspec} +7 -7
  187. data/vendor/bundle/ruby/{3.4.0 → 4.0.0}/specifications/racc-1.8.1.gemspec +1 -1
  188. data/vendor/bundle/ruby/{3.4.0/specifications/rack-3.1.10.gemspec → 4.0.0/specifications/rack-3.2.6.gemspec} +7 -7
  189. data/vendor/bundle/ruby/{3.4.0/specifications/rack-session-2.1.0.gemspec → 4.0.0/specifications/rack-session-2.1.2.gemspec} +5 -5
  190. data/vendor/bundle/ruby/{3.4.0 → 4.0.0}/specifications/rack-test-2.2.0.gemspec +1 -1
  191. data/vendor/bundle/ruby/{3.4.0/specifications/rails-dom-testing-2.2.0.gemspec → 4.0.0/specifications/rails-dom-testing-2.3.0.gemspec} +5 -5
  192. data/vendor/bundle/ruby/{3.4.0/specifications/rails-html-sanitizer-1.6.2.gemspec → 4.0.0/specifications/rails-html-sanitizer-1.7.0.gemspec} +7 -7
  193. data/vendor/bundle/ruby/4.0.0/specifications/rainbow-3.1.1.gemspec +25 -0
  194. data/vendor/bundle/ruby/{3.4.0/specifications/rake-13.2.1.gemspec → 4.0.0/specifications/rake-13.4.2.gemspec} +6 -6
  195. data/vendor/bundle/ruby/{3.4.0/specifications/rake-release-1.3.0.gemspec → 4.0.0/specifications/rake-release-1.4.0.gemspec} +7 -7
  196. data/vendor/bundle/ruby/4.0.0/specifications/regexp_parser-2.12.0.gemspec +22 -0
  197. data/vendor/bundle/ruby/{3.4.0/specifications/rexml-3.4.0.gemspec → 4.0.0/specifications/rexml-3.4.4.gemspec} +6 -6
  198. data/vendor/bundle/ruby/{3.4.0/specifications/rspec-3.13.0.gemspec → 4.0.0/specifications/rspec-3.13.2.gemspec} +9 -9
  199. data/vendor/bundle/ruby/{3.4.0/specifications/rspec-core-3.13.3.gemspec → 4.0.0/specifications/rspec-core-3.13.6.gemspec} +8 -8
  200. data/vendor/bundle/ruby/4.0.0/specifications/rspec-expectations-3.13.5.gemspec +29 -0
  201. data/vendor/bundle/ruby/4.0.0/specifications/rspec-mocks-3.13.8.gemspec +29 -0
  202. data/vendor/bundle/ruby/{3.4.0/specifications/rspec-support-3.13.2.gemspec → 4.0.0/specifications/rspec-support-3.13.7.gemspec} +9 -9
  203. data/vendor/bundle/ruby/4.0.0/specifications/rubocop-1.88.0.gemspec +39 -0
  204. data/vendor/bundle/ruby/4.0.0/specifications/rubocop-ast-1.49.1.gemspec +29 -0
  205. data/vendor/bundle/ruby/4.0.0/specifications/rubocop-capybara-2.23.0.gemspec +28 -0
  206. data/vendor/bundle/ruby/4.0.0/specifications/rubocop-factory_bot-2.28.0.gemspec +28 -0
  207. data/vendor/bundle/ruby/4.0.0/specifications/rubocop-performance-1.26.1.gemspec +30 -0
  208. data/vendor/bundle/ruby/4.0.0/specifications/rubocop-rspec-3.10.2.gemspec +30 -0
  209. data/vendor/bundle/ruby/4.0.0/specifications/rubocop-rspec_rails-2.32.0.gemspec +29 -0
  210. data/vendor/bundle/ruby/4.0.0/specifications/ruby-progressbar-1.13.0.gemspec +29 -0
  211. data/vendor/bundle/ruby/{3.4.0 → 4.0.0}/specifications/securerandom-0.4.1.gemspec +1 -1
  212. data/vendor/bundle/ruby/4.0.0/specifications/simplecov-0.22.0.gemspec +28 -0
  213. data/vendor/bundle/ruby/4.0.0/specifications/simplecov-cobertura-3.2.0.gemspec +29 -0
  214. data/vendor/bundle/ruby/4.0.0/specifications/simplecov-html-0.13.2.gemspec +22 -0
  215. data/vendor/bundle/ruby/4.0.0/specifications/simplecov_json_formatter-0.1.4.gemspec +21 -0
  216. data/vendor/bundle/ruby/{3.4.0/specifications/thor-1.3.2.gemspec → 4.0.0/specifications/thor-1.5.0.gemspec} +8 -8
  217. data/vendor/bundle/ruby/4.0.0/specifications/typhoeus-1.6.0.gemspec +26 -0
  218. data/vendor/bundle/ruby/{3.4.0 → 4.0.0}/specifications/tzinfo-2.0.6.gemspec +1 -1
  219. data/vendor/bundle/ruby/4.0.0/specifications/unicode-display_width-3.2.0.gemspec +30 -0
  220. data/vendor/bundle/ruby/4.0.0/specifications/unicode-emoji-4.2.0.gemspec +22 -0
  221. data/vendor/bundle/ruby/{3.4.0/specifications/uri-1.0.2.gemspec → 4.0.0/specifications/uri-1.1.1.gemspec} +5 -5
  222. data/vendor/bundle/ruby/{3.4.0 → 4.0.0}/specifications/useragent-0.16.11.gemspec +1 -1
  223. data/vendor/bundle/ruby/{3.4.0/specifications/webmock-3.25.0.gemspec → 4.0.0/specifications/webmock-3.26.2.gemspec} +7 -8
  224. metadata +277 -206
  225. data/vendor/bundle/ruby/3.4.0/bundler/gems/rubocop-config-67802c9d1826/README.md +0 -23
  226. data/vendor/bundle/ruby/3.4.0/gems/actionpack-8.0.1/CHANGELOG.md +0 -205
  227. data/vendor/bundle/ruby/3.4.0/gems/actionview-8.0.1/CHANGELOG.md +0 -67
  228. data/vendor/bundle/ruby/3.4.0/gems/activemodel-8.0.1/CHANGELOG.md +0 -110
  229. data/vendor/bundle/ruby/3.4.0/gems/activesupport-8.0.1/CHANGELOG.md +0 -157
  230. data/vendor/bundle/ruby/3.4.0/gems/addressable-2.8.7/addressable.gemspec +0 -28
  231. data/vendor/bundle/ruby/3.4.0/gems/benchmark-0.4.0/README.md +0 -138
  232. data/vendor/bundle/ruby/3.4.0/gems/benchmark-0.4.0/benchmark.gemspec +0 -32
  233. data/vendor/bundle/ruby/3.4.0/gems/connection_pool-2.5.0/connection_pool.gemspec +0 -24
  234. data/vendor/bundle/ruby/3.4.0/gems/ethon-0.16.0/ethon.gemspec +0 -26
  235. data/vendor/bundle/ruby/3.4.0/gems/hashdiff-1.1.2/changelog.md +0 -119
  236. data/vendor/bundle/ruby/3.4.0/gems/logger-1.6.6/logger.gemspec +0 -28
  237. data/vendor/bundle/ruby/3.4.0/gems/multi_json-1.15.0/CHANGELOG.md +0 -275
  238. data/vendor/bundle/ruby/3.4.0/gems/multi_json-1.15.0/LICENSE.md +0 -20
  239. data/vendor/bundle/ruby/3.4.0/gems/multi_json-1.15.0/README.md +0 -121
  240. data/vendor/bundle/ruby/3.4.0/gems/opentelemetry-api-1.4.0/CHANGELOG.md +0 -188
  241. data/vendor/bundle/ruby/3.4.0/gems/opentelemetry-common-0.21.0/CHANGELOG.md +0 -94
  242. data/vendor/bundle/ruby/3.4.0/gems/public_suffix-6.0.1/CHANGELOG.md +0 -491
  243. data/vendor/bundle/ruby/3.4.0/gems/rexml-3.4.0/LICENSE.txt +0 -22
  244. data/vendor/bundle/ruby/3.4.0/gems/rspec-collection_matchers-1.2.1/Changelog.md +0 -68
  245. data/vendor/bundle/ruby/3.4.0/gems/rspec-collection_matchers-1.2.1/README.md +0 -76
  246. data/vendor/bundle/ruby/3.4.0/gems/rspec-collection_matchers-1.2.1/rspec-collection_matchers.gemspec +0 -33
  247. data/vendor/bundle/ruby/3.4.0/gems/rspec-its-2.0.0/Changelog.md +0 -73
  248. data/vendor/bundle/ruby/3.4.0/gems/rspec-its-2.0.0/LICENSE.txt +0 -27
  249. data/vendor/bundle/ruby/3.4.0/gems/rspec-its-2.0.0/README.md +0 -104
  250. data/vendor/bundle/ruby/3.4.0/gems/rspec-its-2.0.0/rspec-its.gemspec +0 -31
  251. data/vendor/bundle/ruby/3.4.0/specifications/benchmark-0.4.0.gemspec +0 -23
  252. data/vendor/bundle/ruby/3.4.0/specifications/ethon-0.16.0.gemspec +0 -24
  253. data/vendor/bundle/ruby/3.4.0/specifications/minitest-5.25.4.gemspec +0 -31
  254. data/vendor/bundle/ruby/3.4.0/specifications/multi_json-1.15.0.gemspec +0 -26
  255. data/vendor/bundle/ruby/3.4.0/specifications/rspec-collection_matchers-1.2.1.gemspec +0 -27
  256. data/vendor/bundle/ruby/3.4.0/specifications/rspec-expectations-3.13.3.gemspec +0 -33
  257. data/vendor/bundle/ruby/3.4.0/specifications/rspec-its-2.0.0.gemspec +0 -27
  258. data/vendor/bundle/ruby/3.4.0/specifications/rspec-mocks-3.13.2.gemspec +0 -33
  259. data/vendor/bundle/ruby/3.4.0/specifications/typhoeus-1.4.1.gemspec +0 -24
  260. /data/vendor/bundle/ruby/{3.4.0/bundler/gems/rubocop-config-67802c9d1826 → 4.0.0/bundler/gems/rubocop-config-2b861962124a}/LICENSE +0 -0
  261. /data/vendor/bundle/ruby/{3.4.0/gems/actionpack-8.0.1 → 4.0.0/gems/actionpack-8.1.3}/MIT-LICENSE +0 -0
  262. /data/vendor/bundle/ruby/{3.4.0/gems/actionview-8.0.1 → 4.0.0/gems/actionview-8.1.3}/MIT-LICENSE +0 -0
  263. /data/vendor/bundle/ruby/{3.4.0/gems/activemodel-8.0.1 → 4.0.0/gems/activemodel-8.1.3}/MIT-LICENSE +0 -0
  264. /data/vendor/bundle/ruby/{3.4.0/gems/activesupport-8.0.1 → 4.0.0/gems/activesupport-8.1.3}/MIT-LICENSE +0 -0
  265. /data/vendor/bundle/ruby/{3.4.0/gems/addressable-2.8.7 → 4.0.0/gems/addressable-2.9.0}/LICENSE.txt +0 -0
  266. /data/vendor/bundle/ruby/{3.4.0 → 4.0.0}/gems/appraisal-2.5.0/MIT-LICENSE +0 -0
  267. /data/vendor/bundle/ruby/{3.4.0 → 4.0.0}/gems/appraisal-2.5.0/README.md +0 -0
  268. /data/vendor/bundle/ruby/{3.4.0 → 4.0.0}/gems/appraisal-2.5.0/appraisal.gemspec +0 -0
  269. /data/vendor/bundle/ruby/{3.4.0/gems/base64-0.2.0 → 4.0.0/gems/base64-0.3.0}/README.md +0 -0
  270. /data/vendor/bundle/ruby/{3.4.0/gems/bigdecimal-3.1.9 → 4.0.0/gems/bigdecimal-4.1.2}/LICENSE +0 -0
  271. /data/vendor/bundle/ruby/{3.4.0 → 4.0.0}/gems/builder-3.3.0/MIT-LICENSE +0 -0
  272. /data/vendor/bundle/ruby/{3.4.0 → 4.0.0}/gems/builder-3.3.0/README.md +0 -0
  273. /data/vendor/bundle/ruby/{3.4.0 → 4.0.0}/gems/builder-3.3.0/builder.gemspec +0 -0
  274. /data/vendor/bundle/ruby/{3.4.0/gems/concurrent-ruby-1.3.5 → 4.0.0/gems/concurrent-ruby-1.3.7}/LICENSE.txt +0 -0
  275. /data/vendor/bundle/ruby/{3.4.0/gems/connection_pool-2.5.0 → 4.0.0/gems/connection_pool-3.0.2}/LICENSE +0 -0
  276. /data/vendor/bundle/ruby/{3.4.0/gems/crack-1.0.0 → 4.0.0/gems/crack-1.0.1}/LICENSE +0 -0
  277. /data/vendor/bundle/ruby/{3.4.0/gems/crack-1.0.0 → 4.0.0/gems/crack-1.0.1}/README.md +0 -0
  278. /data/vendor/bundle/ruby/{3.4.0 → 4.0.0}/gems/crass-1.0.6/LICENSE +0 -0
  279. /data/vendor/bundle/ruby/{3.4.0 → 4.0.0}/gems/crass-1.0.6/README.md +0 -0
  280. /data/vendor/bundle/ruby/{3.4.0 → 4.0.0}/gems/crass-1.0.6/crass.gemspec +0 -0
  281. /data/vendor/bundle/ruby/{3.4.0/gems/base64-0.2.0 → 4.0.0/gems/drb-2.2.3}/LICENSE.txt +0 -0
  282. /data/vendor/bundle/ruby/{3.4.0 → 4.0.0}/gems/erubi-1.13.1/CHANGELOG +0 -0
  283. /data/vendor/bundle/ruby/{3.4.0 → 4.0.0}/gems/erubi-1.13.1/MIT-LICENSE +0 -0
  284. /data/vendor/bundle/ruby/{3.4.0 → 4.0.0}/gems/erubi-1.13.1/README.rdoc +0 -0
  285. /data/vendor/bundle/ruby/{3.4.0/gems/ethon-0.16.0 → 4.0.0/gems/ethon-0.18.0}/LICENSE +0 -0
  286. /data/vendor/bundle/ruby/{3.4.0/gems/ffi-1.17.1-x86_64-linux-gnu → 4.0.0/gems/ffi-1.17.4-x86_64-linux-gnu}/LICENSE +0 -0
  287. /data/vendor/bundle/ruby/{3.4.0/gems/ffi-1.17.1-x86_64-linux-gnu → 4.0.0/gems/ffi-1.17.4-x86_64-linux-gnu}/LICENSE.SPECS +0 -0
  288. /data/vendor/bundle/ruby/{3.4.0/gems/hashdiff-1.1.2 → 4.0.0/gems/hashdiff-1.2.1}/LICENSE +0 -0
  289. /data/vendor/bundle/ruby/{3.4.0/gems/hashdiff-1.1.2 → 4.0.0/gems/hashdiff-1.2.1}/hashdiff.gemspec +0 -0
  290. /data/vendor/bundle/ruby/{3.4.0/gems/i18n-1.14.7 → 4.0.0/gems/i18n-1.15.2}/MIT-LICENSE +0 -0
  291. /data/vendor/bundle/ruby/{3.4.0/gems/logger-1.6.6 → 4.0.0/gems/logger-1.7.0}/README.md +0 -0
  292. /data/vendor/bundle/ruby/{3.4.0/gems/loofah-2.24.0 → 4.0.0/gems/loofah-2.25.1}/MIT-LICENSE.txt +0 -0
  293. /data/vendor/bundle/ruby/{3.4.0/gems/loofah-2.24.0 → 4.0.0/gems/loofah-2.25.1}/README.md +0 -0
  294. /data/vendor/bundle/ruby/{3.4.0/gems/nokogiri-1.18.2-x86_64-linux-gnu → 4.0.0/gems/nokogiri-1.19.4-x86_64-linux-gnu}/LICENSE.md +0 -0
  295. /data/vendor/bundle/ruby/{3.4.0/gems/opentelemetry-api-1.4.0 → 4.0.0/gems/opentelemetry-api-1.10.0}/LICENSE +0 -0
  296. /data/vendor/bundle/ruby/{3.4.0/gems/opentelemetry-common-0.21.0 → 4.0.0/gems/opentelemetry-common-0.25.0}/LICENSE +0 -0
  297. /data/vendor/bundle/ruby/{3.4.0 → 4.0.0}/gems/racc-1.8.1/ChangeLog +0 -0
  298. /data/vendor/bundle/ruby/{3.4.0 → 4.0.0}/gems/racc-1.8.1/README.ja.rdoc +0 -0
  299. /data/vendor/bundle/ruby/{3.4.0 → 4.0.0}/gems/racc-1.8.1/README.rdoc +0 -0
  300. /data/vendor/bundle/ruby/{3.4.0/gems/rack-3.1.10 → 4.0.0/gems/rack-3.2.6}/MIT-LICENSE +0 -0
  301. /data/vendor/bundle/ruby/{3.4.0/gems/rack-session-2.1.0 → 4.0.0/gems/rack-session-2.1.2}/license.md +0 -0
  302. /data/vendor/bundle/ruby/{3.4.0/gems/rack-session-2.1.0 → 4.0.0/gems/rack-session-2.1.2}/readme.md +0 -0
  303. /data/vendor/bundle/ruby/{3.4.0 → 4.0.0}/gems/rack-test-2.2.0/MIT-LICENSE.txt +0 -0
  304. /data/vendor/bundle/ruby/{3.4.0 → 4.0.0}/gems/rack-test-2.2.0/README.md +0 -0
  305. /data/vendor/bundle/ruby/{3.4.0/gems/rails-dom-testing-2.2.0 → 4.0.0/gems/rails-dom-testing-2.3.0}/MIT-LICENSE +0 -0
  306. /data/vendor/bundle/ruby/{3.4.0/gems/rails-html-sanitizer-1.6.2 → 4.0.0/gems/rails-html-sanitizer-1.7.0}/MIT-LICENSE +0 -0
  307. /data/vendor/bundle/ruby/{3.4.0/gems/rails-html-sanitizer-1.6.2 → 4.0.0/gems/rails-html-sanitizer-1.7.0}/README.md +0 -0
  308. /data/vendor/bundle/ruby/{3.4.0/gems/rake-13.2.1 → 4.0.0/gems/rake-13.4.2}/MIT-LICENSE +0 -0
  309. /data/vendor/bundle/ruby/{3.4.0/gems/rake-release-1.3.0 → 4.0.0/gems/rake-release-1.4.0}/LICENSE +0 -0
  310. /data/vendor/bundle/ruby/{3.4.0/gems/rake-release-1.3.0 → 4.0.0/gems/rake-release-1.4.0}/README.md +0 -0
  311. /data/vendor/bundle/ruby/{3.4.0/gems/drb-2.2.1 → 4.0.0/gems/rexml-3.4.4}/LICENSE.txt +0 -0
  312. /data/vendor/bundle/ruby/{3.4.0/gems/rexml-3.4.0 → 4.0.0/gems/rexml-3.4.4}/README.md +0 -0
  313. /data/vendor/bundle/ruby/{3.4.0/gems/rspec-3.13.0 → 4.0.0/gems/rspec-3.13.2}/LICENSE.md +0 -0
  314. /data/vendor/bundle/ruby/{3.4.0/gems/rspec-3.13.0 → 4.0.0/gems/rspec-3.13.2}/README.md +0 -0
  315. /data/vendor/bundle/ruby/{3.4.0/gems/rspec-core-3.13.3 → 4.0.0/gems/rspec-core-3.13.6}/LICENSE.md +0 -0
  316. /data/vendor/bundle/ruby/{3.4.0/gems/rspec-core-3.13.3 → 4.0.0/gems/rspec-core-3.13.6}/README.md +0 -0
  317. /data/vendor/bundle/ruby/{3.4.0/gems/rspec-expectations-3.13.3 → 4.0.0/gems/rspec-expectations-3.13.5}/LICENSE.md +0 -0
  318. /data/vendor/bundle/ruby/{3.4.0/gems/rspec-expectations-3.13.3 → 4.0.0/gems/rspec-expectations-3.13.5}/README.md +0 -0
  319. /data/vendor/bundle/ruby/{3.4.0/gems/rspec-mocks-3.13.2 → 4.0.0/gems/rspec-mocks-3.13.8}/LICENSE.md +0 -0
  320. /data/vendor/bundle/ruby/{3.4.0/gems/rspec-mocks-3.13.2 → 4.0.0/gems/rspec-mocks-3.13.8}/README.md +0 -0
  321. /data/vendor/bundle/ruby/{3.4.0/gems/rspec-support-3.13.2 → 4.0.0/gems/rspec-support-3.13.7}/LICENSE.md +0 -0
  322. /data/vendor/bundle/ruby/{3.4.0/gems/rspec-support-3.13.2 → 4.0.0/gems/rspec-support-3.13.7}/README.md +0 -0
  323. /data/vendor/bundle/ruby/{3.4.0 → 4.0.0}/gems/securerandom-0.4.1/README.md +0 -0
  324. /data/vendor/bundle/ruby/{3.4.0/gems/thor-1.3.2 → 4.0.0/gems/thor-1.5.0}/LICENSE.md +0 -0
  325. /data/vendor/bundle/ruby/{3.4.0/gems/typhoeus-1.4.1 → 4.0.0/gems/typhoeus-1.6.0}/LICENSE +0 -0
  326. /data/vendor/bundle/ruby/{3.4.0 → 4.0.0}/gems/tzinfo-2.0.6/LICENSE +0 -0
  327. /data/vendor/bundle/ruby/{3.4.0 → 4.0.0}/gems/tzinfo-2.0.6/README.md +0 -0
  328. /data/vendor/bundle/ruby/{3.4.0 → 4.0.0}/gems/useragent-0.16.11/LICENSE +0 -0
  329. /data/vendor/bundle/ruby/{3.4.0 → 4.0.0}/gems/useragent-0.16.11/README.md +0 -0
  330. /data/vendor/bundle/ruby/{3.4.0/gems/webmock-3.25.0 → 4.0.0/gems/webmock-3.26.2}/LICENSE +0 -0
@@ -1,6 +1,6 @@
1
- # Public Suffix <small>for Ruby</small>
1
+ # PublicSuffix for Ruby
2
2
 
3
- <tt>PublicSuffix</tt> is a Ruby domain name parser based on the [Public Suffix List](https://publicsuffix.org/).
3
+ `PublicSuffix` is a Ruby domain name parser based on the [Public Suffix List](https://publicsuffix.org/).
4
4
 
5
5
  [![Build Status](https://github.com/weppos/publicsuffix-ruby/actions/workflows/tests.yml/badge.svg)](https://github.com/weppos/publicsuffix-ruby/actions/workflows/tests.yml)
6
6
  [![Tidelift dependencies](https://tidelift.com/badges/package/rubygems/public_suffix)](https://tidelift.com/subscription/pkg/rubygems-public-suffix?utm_source=rubygems-public-suffix&utm_medium=referral&utm_campaign=enterprise)
@@ -16,7 +16,7 @@
16
16
 
17
17
  ## Requirements
18
18
 
19
- <tt>PublicSuffix</tt> requires **Ruby >= 3.0**. For an older versions of Ruby use a previous release.
19
+ `PublicSuffix` requires **Ruby >= 3.2**. For older versions of Ruby, use a previous release.
20
20
 
21
21
 
22
22
  ## Installation
@@ -106,9 +106,9 @@ PublicSuffix.valid?("example.tldnotlisted", default_rule: nil)
106
106
  ```
107
107
 
108
108
 
109
- ## Fully Qualified Domain Names
109
+ ## Fully qualified domain names
110
110
 
111
- This library automatically recognizes Fully Qualified Domain Names. A FQDN is a domain name that end with a trailing dot.
111
+ This library automatically recognizes Fully Qualified Domain Names. A FQDN is a domain name that ends with a trailing dot.
112
112
 
113
113
  ```ruby
114
114
  # Parse a standard domain name
@@ -122,7 +122,7 @@ PublicSuffix.domain("www.google.com.")
122
122
 
123
123
  ## Private domains
124
124
 
125
- This library has support for switching off support for private (non-ICANN).
125
+ This library supports toggling private (non-ICANN) domain handling.
126
126
 
127
127
  ```ruby
128
128
  # Extract a domain including private domains (by default)
@@ -148,15 +148,15 @@ PublicSuffix.domain("something.blogspot.com")
148
148
  # => "blogspot.com"
149
149
  ```
150
150
 
151
- ## Add domain to list
151
+ ## Adding custom domains
152
152
 
153
- If you want to manually add a domain to the list just run:
153
+ To manually add a domain to the list:
154
154
 
155
155
  ```ruby
156
156
  PublicSuffix::List.default << PublicSuffix::Rule.factory('onmicrosoft.com')
157
157
  ```
158
158
 
159
- ## What is the Public Suffix List?
159
+ ## What is the public suffix list?
160
160
 
161
161
  The [Public Suffix List](https://publicsuffix.org) is a cross-vendor initiative to provide an accurate list of domain name suffixes.
162
162
 
@@ -165,7 +165,7 @@ The Public Suffix List is an initiative of the Mozilla Project, but is maintaine
165
165
  A "public suffix" is one under which Internet users can directly register names. Some examples of public suffixes are ".com", ".co.uk" and "pvt.k12.wy.us". The Public Suffix List is a list of all known public suffixes.
166
166
 
167
167
 
168
- ## Why the Public Suffix List is better than any available Regular Expression parser?
168
+ ## Why use the public suffix list instead of regular expressions?
169
169
 
170
170
  Previously, browsers used an algorithm which basically only denied setting wide-ranging cookies for top-level domains with no dots (e.g. com or org). However, this did not work for top-level domains where only third-level registrations are allowed (e.g. co.uk). In these cases, websites could set a cookie for co.uk which will be passed onto every website registered under co.uk.
171
171
 
@@ -180,43 +180,52 @@ Source: https://wiki.mozilla.org/Public_Suffix_List
180
180
  Not convinced yet? Check out [this real world example](https://stackoverflow.com/q/288810/123527).
181
181
 
182
182
 
183
- ## Does <tt>PublicSuffix</tt> make requests to Public Suffix List website?
183
+ ## Does PublicSuffix make network requests?
184
184
 
185
- No. <tt>PublicSuffix</tt> comes with a bundled list. It does not make any HTTP requests to parse or validate a domain.
185
+ No. `PublicSuffix` comes with a bundled list. It does not make any HTTP requests to parse or validate a domain.
186
186
 
187
187
 
188
- ## Support
188
+ ## Terminology
189
189
 
190
- Library documentation is auto-generated from the [README](https://github.com/weppos/publicsuffix-ruby/blob/master/README.md) and the source code, and it's available at https://rubydoc.info/gems/public_suffix.
190
+ - **TLD** (Top-Level Domain): The last segment of a domain name. For example, in `mozilla.org`, the `.org` portion is the TLD.
191
191
 
192
- - The PublicSuffix bug tracker is here: https://github.com/weppos/publicsuffix-ruby/issues
193
- - The PublicSuffix code repository is here: https://github.com/weppos/publicsuffix-ruby. Contributions are welcome! Please include tests and/or feature coverage for every patch, and create a topic branch for every separate change you make.
192
+ - **SLD** (Second-Level Domain): A domain directly below a top-level domain. For example, in `https://www.mozilla.org/en-US/`, `mozilla` is the second-level domain of the `.org` TLD.
194
193
 
195
- [Consider subscribing to Tidelift which provides Enterprise support for this project](https://tidelift.com/subscription/pkg/rubygems-public-suffix?utm_source=rubygems-public-suffix&utm_medium=referral&utm_campaign=readme) as part of the Tidelift Subscription. Tidelift subscriptions also help the maintainers by funding the project, which in turn allows us to ship releases, bugfixes, and security updates more often.
194
+ - **TRD** (Third-Level Domain): Also known as a subdomain, this is the part of the domain before the SLD or root domain. For example, in `https://www.mozilla.org/en-US/`, `www` is the TRD.
196
195
 
196
+ - **FQDN** (Fully Qualified Domain Name): A complete domain name that includes the hostname, domain, and top-level domain, ending with a trailing dot. The format is `[hostname].[domain].[tld].` (e.g., `www.mozilla.org.`).
197
197
 
198
- ## Security and Vulnerability Reporting
199
198
 
200
- Full information and description of our security policy please visit [`SECURITY.md`](SECURITY.md)
199
+ ## Documentation and support
201
200
 
201
+ ### Documentation
202
202
 
203
- ## Changelog
203
+ Library documentation is auto-generated from the [README](https://github.com/weppos/publicsuffix-ruby/blob/master/README.md) and source code, and is available at https://rubydoc.info/gems/public_suffix.
204
204
 
205
- See the [CHANGELOG.md](CHANGELOG.md) file for details.
205
+ ### Bug reports and contributions
206
206
 
207
+ - **Bug Tracker**: https://github.com/weppos/publicsuffix-ruby/issues
208
+ - **Code Repository**: https://github.com/weppos/publicsuffix-ruby
207
209
 
208
- ## License
210
+ Contributions are welcome! Please include tests and/or feature coverage for every patch, and create a topic branch for every separate change you make.
209
211
 
210
- Copyright (c) 2009-2024 Simone Carletti. This is Free Software distributed under the MIT license.
212
+ ### Enterprise support
211
213
 
212
- The [Public Suffix List source](https://publicsuffix.org/list/) is subject to the terms of the Mozilla Public License, v. 2.0.
214
+ [Consider subscribing to Tidelift](https://tidelift.com/subscription/pkg/rubygems-public-suffix?utm_source=rubygems-public-suffix&utm_medium=referral&utm_campaign=readme), which provides enterprise support for this project as part of the Tidelift Subscription. Tidelift subscriptions help fund the project, allowing us to ship releases, bugfixes, and security updates more frequently.
213
215
 
214
- ## Definitions
215
216
 
216
- tld = Top level domain, this is in reference to the last segment of a domain, sometimes the part that is directly after the "dot" symbol. For example, `mozilla.org`, the `.org` portion is the tld.
217
+ ## Security and vulnerability reporting
217
218
 
218
- sld = Second level domain, a domain that is directly below a top-level domain. For example, in `https://www.mozilla.org/en-US/`, `mozilla` is the second-level domain of the .org tld.
219
+ For full information and details about our security policy, please visit [`SECURITY.md`](SECURITY.md).
220
+
221
+
222
+ ## Changelog
219
223
 
220
- trd = Transit routing domain, or known as a subdomain. This is the part of the domain that is before the sld or root domain. For example, in `https://www.mozilla.org/en-US/`, `www` is the trd.
224
+ See [CHANGELOG.md](CHANGELOG.md) for details.
221
225
 
222
- FQDN = Fully Qualified Domain Names, are domain names that are written with the hostname and the domain name, and include the top-level domain, the format looks like `[hostname].[domain].[tld].` for ex. `[www].[mozilla].[org]`.
226
+
227
+ ## License
228
+
229
+ Copyright (c) 2009-2026 Simone Carletti. [MIT License](LICENSE.txt).
230
+
231
+ The [Public Suffix List source](https://publicsuffix.org/list/) is subject to the terms of the Mozilla Public License, v. 2.0.
@@ -2,11 +2,180 @@
2
2
 
3
3
  All notable changes to this project will be documented in this file. For info on how to format all future additions to this file please reference [Keep A Changelog](https://keepachangelog.com/en/1.0.0/).
4
4
 
5
+ ## [3.2.6] - 2026-04-01
6
+
7
+ ### Security
8
+
9
+ - [CVE-2026-34763](https://github.com/advisories/GHSA-7mqq-6cf9-v2qp) Root directory disclosure via unescaped regex interpolation in `Rack::Directory`.
10
+ - [CVE-2026-34230](https://github.com/advisories/GHSA-v569-hp3g-36wr) Avoid O(n^2) algorithm in `Rack::Utils.select_best_encoding` which could lead to denial of service.
11
+ - [CVE-2026-32762](https://github.com/advisories/GHSA-qfgr-crr9-7r49) Forwarded header semicolon injection enables Host and Scheme spoofing.
12
+ - [CVE-2026-26961](https://github.com/advisories/GHSA-vgpv-f759-9wx3) Raise error for multipart requests with multiple boundary parameters.
13
+ - [CVE-2026-34786](https://github.com/advisories/GHSA-q4qf-9j86-f5mh) `Rack::Static` `header_rules` bypass via URL-encoded path mismatch.
14
+ - [CVE-2026-34831](https://github.com/advisories/GHSA-q2ww-5357-x388) `Content-Length` mismatch in `Rack::Files` error responses.
15
+ - [CVE-2026-34826](https://github.com/advisories/GHSA-x8cg-fq8g-mxfx) Multipart byte range processing allows denial of service via excessive overlapping ranges.
16
+ - [CVE-2026-34835](https://github.com/advisories/GHSA-g2pf-xv49-m2h5) `Rack::Request` accepts invalid Host characters, enabling host allowlist bypass.
17
+ - [CVE-2026-34830](https://github.com/advisories/GHSA-qv7j-4883-hwh7) `Rack::Sendfile` header-based `X-Accel-Mapping` regex injection enables unauthorized `X-Accel-Redirect`.
18
+ - [CVE-2026-34785](https://github.com/advisories/GHSA-h2jq-g4cq-5ppq) `Rack::Static` prefix matching can expose unintended files under the static root.
19
+ - [CVE-2026-34829](https://github.com/advisories/GHSA-8vqr-qjwx-82mw) Multipart parsing without `Content-Length` header allows unbounded chunked file uploads.
20
+ - [CVE-2026-34827](https://github.com/advisories/GHSA-v6x5-cg8r-vv6x) Quadratic-time multipart header parsing allows denial of service via escape-heavy quoted parameters.
21
+ - [CVE-2026-26962](https://github.com/advisories/GHSA-rx22-g9mx-qrhv) Improper unfolding of folded multipart headers preserves CRLF in parsed parameter values.
22
+
23
+ ## [3.2.5] - 2026-02-16
24
+
25
+ ### Security
26
+
27
+ - [CVE-2026-25500](https://github.com/advisories/GHSA-whrj-4476-wvmp) XSS injection via malicious filename in `Rack::Directory`.
28
+ - [CVE-2026-22860](https://github.com/advisories/GHSA-mxw3-3hh2-x2mh) Directory traversal via root prefix bypass in `Rack::Directory`.
29
+
30
+ ### Fixed
31
+
32
+ - Fix `Rack::MockResponse#body` when the body is a Proc. ([#2420](https://github.com/rack/rack/pull/2420), [#2423](https://github.com/rack/rack/pull/2423), [@tavianator](https://github.com/tavianator), [@ioquatix])
33
+
34
+ ## [3.2.4] - 2025-11-03
35
+
36
+ ### Fixed
37
+
38
+ - Multipart parser: limit MIME header size check to the unread buffer region to avoid false `multipart mime part header too large` errors when previously read data accumulates in the scan buffer. ([#2392](https://github.com/rack/rack/pull/2392), [@alpaca-tc](https://github.com/alpaca-tc), [@willnet](https://github.com/willnet), [@krororo](https://github.com/krororo))
39
+
40
+ ## [3.2.3] - 2025-10-10
41
+
42
+ ### Security
43
+
44
+ - [CVE-2025-61780](https://github.com/advisories/GHSA-r657-rxjc-j557) Improper handling of headers in `Rack::Sendfile` may allow proxy bypass.
45
+ - [CVE-2025-61919](https://github.com/advisories/GHSA-6xw4-3v39-52mm) Unbounded read in `Rack::Request` form parsing can lead to memory exhaustion.
46
+
47
+ ## [3.2.2] - 2025-10-07
48
+
49
+ ### Security
50
+
51
+ - [CVE-2025-61772](https://github.com/advisories/GHSA-wpv5-97wm-hp9c) Multipart parser buffers unbounded per-part headers, enabling DoS (memory exhaustion)
52
+ - [CVE-2025-61771](https://github.com/advisories/GHSA-w9pc-fmgc-vxvw) Multipart parser buffers large non‑file fields entirely in memory, enabling DoS (memory exhaustion)
53
+ - [CVE-2025-61770](https://github.com/advisories/GHSA-p543-xpfm-54cp) Unbounded multipart preamble buffering enables DoS (memory exhaustion)
54
+
55
+ ## [3.2.1] -- 2025-09-02
56
+
57
+ ### Added
58
+
59
+ - Add support for streaming bodies when using `Rack::Events`. ([#2375](github.com/rack/rack/pull/2375), [@unflxw](https://github.com/unflxw))
60
+
61
+ ### Fixed
62
+
63
+ - Fix an issue where a `NoMethodError` would be raised when using `Rack::Events` with streaming bodies. ([#2375](github.com/rack/rack/pull/2375), [@unflxw](https://github.com/unflxw))
64
+
65
+ ## [3.2.0] - 2025-07-31
66
+
67
+ This release continues Rack's evolution toward a cleaner, more efficient foundation while maintaining backward compatibility for most applications. The breaking changes primarily affect deprecated functionality, so most users should experience a smooth upgrade with improved performance and standards compliance.
68
+
69
+ ### SPEC Changes
70
+
71
+ - Request environment keys must now be strings. ([#2310](https://github.com/rack/rack/issues/2310), [@jeremyevans])
72
+ - Add `nil` as a valid return from a Response `body.to_path` ([#2318](https://github.com/rack/rack/pull/2318), [@MSP-Greg])
73
+ - `Rack::Lint#check_header_value` is relaxed, only disallowing CR/LF/NUL characters. ([#2354](https://github.com/rack/rack/pull/2354), [@ioquatix])
74
+
75
+ ### Added
76
+
77
+ - Introduce `Rack::VERSION` constant. ([#2199](https://github.com/rack/rack/pull/2199), [@ioquatix])
78
+ - `ISO-2022-JP` encoded parts within MIME Multipart sections of an HTTP request body will now be converted to `UTF-8`. ([#2245](https://github.com/rack/rack/pull/2245), [@nappa](https://github.com/nappa))
79
+ - Add `Rack::Request#query_parser=` to allow setting the query parser to use. ([#2349](https://github.com/rack/rack/pull/2349), [@jeremyevans])
80
+ - Add `Rack::Request#form_pairs` to access form data as raw key-value pairs, preserving duplicate keys. ([#2351](https://github.com/rack/rack/pull/2351), [@matthewd])
81
+
82
+ ### Changed
83
+
84
+ - Invalid cookie keys will now raise an error. ([#2193](https://github.com/rack/rack/pull/2193), [@ioquatix])
85
+ - `Rack::MediaType#params` now handles empty strings. ([#2229](https://github.com/rack/rack/pull/2229), [@jeremyevans])
86
+ - Avoid unnecessary calls to the `ip_filter` lambda to evaluate `Request#ip` ([#2287](https://github.com/rack/rack/pull/2287), [@willbryant])
87
+ - Only calculate `Request#ip` once per request ([#2292](https://github.com/rack/rack/pull/2292), [@willbryant])
88
+ - `Rack::Builder` `#use`, `#map`, and `#run` methods now return `nil`. ([#2355](https://github.com/rack/rack/pull/2355), [@ioquatix])
89
+ - Directly close the body in `Rack::ConditionalGet` when the response is `304 Not Modified`. ([#2353](https://github.com/rack/rack/pull/2353), [@ioquatix])
90
+ - Directly close the body in `Rack::Head` when the request method is `HEAD`([#2360](https://github.com/rack/rack/pull/2360), [@skipkayhil](https://github.com/skipkayhil))
91
+
92
+ ### Deprecated
93
+
94
+ - `Rack::Auth::AbstractRequest#request` is deprecated without replacement. ([#2229](https://github.com/rack/rack/pull/2229), [@jeremyevans])
95
+ - `Rack::Request#parse_multipart` (private method designed to be overridden in subclasses) is deprecated without replacement. ([#2229](https://github.com/rack/rack/pull/2229), [@jeremyevans])
96
+
97
+ ### Removed
98
+
99
+ - `Rack::Request#values_at` is removed. ([#2200](https://github.com/rack/rack/pull/2200), [@ioquatix])
100
+ - `Rack::Logger` is removed with no replacement. ([#2196](https://github.com/rack/rack/pull/2196), [@ioquatix])
101
+ - Automatic cache invalidation in `Rack::Request#{GET,POST}` has been removed. ([#2230](https://github.com/rack/rack/pull/2230), [@jeremyevans])
102
+ - Support for `CGI::Cookie` has been removed. ([#2332](https://github.com/rack/rack/pull/2332), [@ioquatix])
103
+
104
+ ### Fixed
105
+
106
+ - `Rack::RewindableInput::Middleware` no longer wraps a nil input. ([#2259](https://github.com/rack/rack/pull/2259), [@tt](https://github.com/tt))
107
+ - Fix `NoMethodError` in `Rack::Request#wrap_ipv6` when `x-forwarded-host` is empty. ([#2270](https://github.com/rack/rack/pull/2270), [@oieioi](https://github.com/oieioi))
108
+ - Fix the specification for `SERVER_PORT` which was incorrectly documented as required to be an `Integer` if present - it must be a `String` containing digits only. ([#2296](https://github.com/rack/rack/pull/2296), [@ioquatix])
109
+ - `SERVER_NAME` and `HTTP_HOST` are now more strictly validated according to the relevant specifications. ([#2298](https://github.com/rack/rack/pull/2298), [@ioquatix])
110
+ - `Rack::Lint` now disallows `PATH_INFO="" SCRIPT_NAME=""`. ([#2298](https://github.com/rack/rack/issues/2307), [@jeremyevans])
111
+
112
+ ## [3.1.20] - 2026-02-16
113
+
114
+ ### Security
115
+
116
+ - [CVE-2026-25500](https://github.com/advisories/GHSA-whrj-4476-wvmp) XSS injection via malicious filename in `Rack::Directory`.
117
+ - [CVE-2026-22860](https://github.com/advisories/GHSA-mxw3-3hh2-x2mh) Directory traversal via root prefix bypass in `Rack::Directory`.
118
+
119
+ ## [3.1.19] - 2025-11-03
120
+
121
+ ### Fixed
122
+
123
+ - Multipart parser: limit MIME header size check to the unread buffer region to avoid false `multipart mime part header too large` errors when previously read data accumulates in the scan buffer. ([#2392](https://github.com/rack/rack/pull/2392), [@alpaca-tc](https://github.com/alpaca-tc), [@willnet](https://github.com/willnet), [@krororo](https://github.com/krororo))
124
+
125
+ ## [3.1.18] - 2025-10-10
126
+
127
+ ### Security
128
+
129
+ - [CVE-2025-61780](https://github.com/advisories/GHSA-r657-rxjc-j557) Improper handling of headers in `Rack::Sendfile` may allow proxy bypass.
130
+ - [CVE-2025-61919](https://github.com/advisories/GHSA-6xw4-3v39-52mm) Unbounded read in `Rack::Request` form parsing can lead to memory exhaustion.
131
+
132
+ ## [3.1.17] - 2025-10-07
133
+
134
+ ### Security
135
+
136
+ - [CVE-2025-61772](https://github.com/advisories/GHSA-wpv5-97wm-hp9c) Multipart parser buffers unbounded per-part headers, enabling DoS (memory exhaustion)
137
+ - [CVE-2025-61771](https://github.com/advisories/GHSA-w9pc-fmgc-vxvw) Multipart parser buffers large non‑file fields entirely in memory, enabling DoS (memory exhaustion)
138
+ - [CVE-2025-61770](https://github.com/advisories/GHSA-p543-xpfm-54cp) Unbounded multipart preamble buffering enables DoS (memory exhaustion)
139
+
140
+ ## [3.1.16] - 2025-06-04
141
+
142
+ ### Security
143
+
144
+ - [CVE-2025-49007](https://github.com/advisories/GHSA-47m2-26rw-j2jw) Fix ReDoS in multipart request.
145
+
146
+ ## [3.1.15] - 2025-05-18
147
+
148
+ - Optional support for `CGI::Cookie` if not available. ([#2327](https://github.com/rack/rack/pull/2327), [#2333](https://github.com/rack/rack/pull/2333), [@earlopain])
149
+
150
+ ## [3.1.14] - 2025-05-06
151
+
152
+ :warning: **This release includes a security fix that may cause certain routes in previously working applications to fail if query parameters exceed 4,096 in count or 4 MB in total size. See <https://github.com/rack/rack/discussions/2356> for more details.**
153
+
154
+ ### Security
155
+
156
+ - [CVE-2025-46727](https://github.com/advisories/GHSA-gjh7-p2fx-99vx) Unbounded parameter parsing in `Rack::QueryParser` can lead to memory exhaustion.
157
+
158
+ ## [3.1.13] - 2025-04-13
159
+
160
+ - Ensure `Rack::ETag` correctly updates response body. ([#2324](https://github.com/rack/rack/pull/2324), [@ioquatix])
161
+
162
+ ## [3.1.12] - 2025-03-11
163
+
164
+ ### Security
165
+
166
+ - [CVE-2025-27610](https://github.com/advisories/GHSA-7wqh-767x-r66v) Local file inclusion in `Rack::Static`.
167
+
168
+ ## [3.1.11] - 2025-03-04
169
+
170
+ ### Security
171
+
172
+ - [CVE-2025-27111](https://github.com/advisories/GHSA-8cgq-6mh2-7j6v) Possible Log Injection in `Rack::Sendfile`.
173
+
5
174
  ## [3.1.10] - 2025-02-12
6
175
 
7
176
  ### Security
8
177
 
9
- - [CVE-2025-25184](https://github.com/rack/rack/security/advisories/GHSA-7g2v-jj9q-g3rg) Possible Log Injection in Rack::CommonLogger.
178
+ - [CVE-2025-25184](https://github.com/advisories/GHSA-7g2v-jj9q-g3rg) Possible Log Injection in `Rack::CommonLogger`.
10
179
 
11
180
  ## [3.1.9] - 2025-01-31
12
181
 
@@ -39,7 +208,7 @@ All notable changes to this project will be documented in this file. For info on
39
208
 
40
209
  ### Security
41
210
 
42
- - Fix potential ReDoS attack in `Rack::Request#parse_http_accept_header`. ([GHSA-cj83-2ww7-mvq7](https://github.com/rack/rack/security/advisories/GHSA-cj83-2ww7-mvq7), [@dwisiswant0](https://github.com/dwisiswant0))
211
+ - Fix potential ReDoS attack in `Rack::Request#parse_http_accept_header`. ([GHSA-cj83-2ww7-mvq7](https://github.com/advisories/GHSA-cj83-2ww7-mvq7), [@dwisiswant0](https://github.com/dwisiswant0))
43
212
 
44
213
  ## [3.1.4] - 2024-06-22
45
214
 
@@ -66,7 +235,7 @@ All notable changes to this project will be documented in this file. For info on
66
235
 
67
236
  :warning: **This release includes several breaking changes.** Refer to the **Removed** section below for the list of deprecated methods that have been removed in this release.
68
237
 
69
- Rack v3.1 is primarily a maintenance release that removes features deprecated in Rack v3.0. Alongside these removals, there are several improvements to the Rack SPEC, mainly focused on enhancing input and output handling. These changes aim to make Rack more efficient and align better with the requirements of server implementations and relevant HTTP specifications.
238
+ This release is primarily a maintenance release that removes features deprecated in Rack v3.0. Alongside these removals, there are several improvements to the Rack SPEC, mainly focused on enhancing input and output handling. These changes aim to make Rack more efficient and align better with the requirements of server implementations and relevant HTTP specifications.
70
239
 
71
240
  ### SPEC Changes
72
241
 
@@ -117,6 +286,48 @@ Rack v3.1 is primarily a maintenance release that removes features deprecated in
117
286
 
118
287
  - In `Rack::Files`, ignore the `Range` header if served file is 0 bytes. ([#2159](https://github.com/rack/rack/pull/2159), [@zarqman])
119
288
 
289
+ ## [3.0.18] - 2025-05-22
290
+
291
+ - Fix incorrect backport of optional `CGI::Cookie` support. ([#2335](https://github.com/rack/rack/pull/2335), [@jeremyevans])
292
+
293
+ ## [3.0.17] - 2025-05-18
294
+
295
+ - Optional support for `CGI::Cookie` if not available. ([#2327](https://github.com/rack/rack/pull/2327), [#2333](https://github.com/rack/rack/pull/2333), [@earlopain])
296
+
297
+ ## [3.0.16] - 2025-05-06
298
+
299
+ :warning: **This release includes a security fix that may cause certain routes in previously working applications to fail if query parameters exceed 4,096 in count or 4 MB in total size. See <https://github.com/rack/rack/discussions/2356> for more details.**
300
+
301
+ ### Security
302
+
303
+ - [CVE-2025-46727](https://github.com/advisories/GHSA-gjh7-p2fx-99vx) Unbounded parameter parsing in `Rack::QueryParser` can lead to memory exhaustion.
304
+
305
+ ## [3.0.15] - 2025-04-13
306
+
307
+ - Ensure `Rack::ETag` correctly updates response body. ([#2324](https://github.com/rack/rack/pull/2324), [@ioquatix])
308
+
309
+ ## [3.0.14] - 2025-03-11
310
+
311
+ ### Security
312
+
313
+ - [CVE-2025-27610](https://github.com/advisories/GHSA-7wqh-767x-r66v) Local file inclusion in `Rack::Static`.
314
+
315
+ ## [3.0.13] - 2025-03-04
316
+
317
+ ### Security
318
+
319
+ - [CVE-2025-27111](https://github.com/advisories/GHSA-8cgq-6mh2-7j6v) Possible Log Injection in `Rack::Sendfile`.
320
+
321
+ ### Fixed
322
+
323
+ - Remove autoloads for constants no longer shipped with Rack. ([#2269](https://github.com/rack/rack/pull/2269), [@ccutrer](https://github.com/ccutrer))
324
+
325
+ ## [3.0.12] - 2025-02-12
326
+
327
+ ### Security
328
+
329
+ - [CVE-2025-25184](https://github.com/advisories/GHSA-7g2v-jj9q-g3rg) Possible Log Injection in `Rack::CommonLogger`.
330
+
120
331
  ## [3.0.11] - 2024-05-10
121
332
 
122
333
  - Backport #2062 to 3-0-stable: Do not allow `BodyProxy` to respond to `to_str`, make `to_ary` call close . ([#2062](https://github.com/rack/rack/pull/2062), [@jeremyevans](https://github.com/jeremyevans))
@@ -205,6 +416,8 @@ Rack v3.1 is primarily a maintenance release that removes features deprecated in
205
416
 
206
417
  ## [3.0.0] - 2022-09-06
207
418
 
419
+ This release introduces major improvements to Rack, including enhanced support for streaming responses, expanded protocol handling, and stricter compliance with HTTP standards. It refines middleware interfaces, improves multipart and hijack handling, and strengthens security and error reporting. The update also brings performance optimizations, better compatibility with modern Ruby versions, and numerous bug fixes, making Rack more robust and flexible for web application development.
420
+
208
421
  - No changes
209
422
 
210
423
  ## [3.0.0.rc1] - 2022-09-04
@@ -245,7 +458,7 @@ Rack v3.1 is primarily a maintenance release that removes features deprecated in
245
458
  - Remove deprecated Rack::Request::SCHEME_WHITELIST. ([@jeremyevans])
246
459
  - Remove internal cookie deletion using pattern matching, there are very few practical cases where it would be useful and browsers handle it correctly without us doing anything special. ([#1844](https://github.com/rack/rack/pull/1844), [@ioquatix])
247
460
  - Remove `rack.version` as it comes too late to be useful. ([#1938](https://github.com/rack/rack/pull/1938), [@ioquatix])
248
- - Extract `rackup` command, `Rack::Server`, `Rack::Handler`, `Rack::Lobster` and related code into a separate gem. ([#1937](https://github.com/rack/rack/pull/1937), [@ioquatix])
461
+ - Extract `rackup` command, `Rack::Server`, `Rack::Handler` and related code into a separate gem. ([#1937](https://github.com/rack/rack/pull/1937), [@ioquatix])
249
462
 
250
463
  ### Added
251
464
 
@@ -293,6 +506,124 @@ Rack v3.1 is primarily a maintenance release that removes features deprecated in
293
506
  - Fix multipart filename generation for filenames that contain spaces. Encode spaces as "%20" instead of "+" which will be decoded properly by the multipart parser. ([#1736](https://github.com/rack/rack/pull/1645), [@muirdm](https://github.com/muirdm))
294
507
  - `Rack::Request#scheme` returns `ws` or `wss` when one of the `X-Forwarded-Scheme` / `X-Forwarded-Proto` headers is set to `ws` or `wss`, respectively. ([#1730](https://github.com/rack/rack/issues/1730), [@erwanst](https://github.com/erwanst))
295
508
 
509
+ ## [2.2.22] - 2026-02-16
510
+
511
+ ### Security
512
+
513
+ - [CVE-2026-25500](https://github.com/advisories/GHSA-whrj-4476-wvmp) XSS injection via malicious filename in `Rack::Directory`.
514
+ - [CVE-2026-22860](https://github.com/advisories/GHSA-mxw3-3hh2-x2mh) Directory traversal via root prefix bypass in `Rack::Directory`.
515
+
516
+ ## [2.2.21] - 2025-11-03
517
+
518
+ ### Fixed
519
+
520
+ - Multipart parser: limit MIME header size check to the unread buffer region to avoid false `multipart mime part header too large` errors when previously read data accumulates in the scan buffer. ([#2392](https://github.com/rack/rack/pull/2392), [@alpaca-tc](https://github.com/alpaca-tc), [@willnet](https://github.com/willnet), [@krororo](https://github.com/krororo))
521
+
522
+ ## [2.2.20] - 2025-10-10
523
+
524
+ ### Security
525
+
526
+ - [CVE-2025-61780](https://github.com/advisories/GHSA-r657-rxjc-j557) Improper handling of headers in `Rack::Sendfile` may allow proxy bypass.
527
+ - [CVE-2025-61919](https://github.com/advisories/GHSA-6xw4-3v39-52mm) Unbounded read in `Rack::Request` form parsing can lead to memory exhaustion.
528
+
529
+ ## [2.2.19] - 2025-10-07
530
+
531
+ ### Security
532
+
533
+ - [CVE-2025-61772](https://github.com/advisories/GHSA-wpv5-97wm-hp9c) Multipart parser buffers unbounded per-part headers, enabling DoS (memory exhaustion)
534
+ - [CVE-2025-61771](https://github.com/advisories/GHSA-w9pc-fmgc-vxvw) Multipart parser buffers large non‑file fields entirely in memory, enabling DoS (memory exhaustion)
535
+ - [CVE-2025-61770](https://github.com/advisories/GHSA-p543-xpfm-54cp) Unbounded multipart preamble buffering enables DoS (memory exhaustion)
536
+
537
+ ## [2.2.18] - 2025-09-25
538
+
539
+ ### Security
540
+
541
+ - [CVE-2025-59830](https://github.com/advisories/GHSA-625h-95r8-8xpm) Unbounded parameter parsing in `Rack::QueryParser` can lead to memory exhaustion via semicolon-separated parameters.
542
+
543
+ ## [2.2.17] - 2025-06-03
544
+
545
+ - Backport `Rack::MediaType#params` now handles parameters without values. ([#2263](https://github.com/rack/rack/pull/2263), [@AllyMarthaJ](https://github.com/AllyMarthaJ))
546
+
547
+ ## [2.2.16] - 2025-05-22
548
+
549
+ - Fix incorrect backport of optional `CGI::Cookie` support. ([#2335](https://github.com/rack/rack/pull/2335), [@jeremyevans])
550
+
551
+ ## [2.2.15] - 2025-05-18
552
+
553
+ - Optional support for `CGI::Cookie` if not available. ([#2327](https://github.com/rack/rack/pull/2327), [#2333](https://github.com/rack/rack/pull/2333), [@earlopain])
554
+
555
+ ## [2.2.14] - 2025-05-06
556
+
557
+ :warning: **This release includes a security fix that may cause certain routes in previously working applications to fail if query parameters exceed 4,096 in count or 4 MB in total size. See <https://github.com/rack/rack/discussions/2356> for more details.**
558
+
559
+ ### Security
560
+
561
+ - [CVE-2025-46727](https://github.com/advisories/GHSA-gjh7-p2fx-99vx) Unbounded parameter parsing in `Rack::QueryParser` can lead to memory exhaustion.
562
+
563
+ ## [2.2.13] - 2025-03-11
564
+
565
+ ### Security
566
+
567
+ - [CVE-2025-27610](https://github.com/advisories/GHSA-7wqh-767x-r66v) Local file inclusion in `Rack::Static`.
568
+
569
+ ## [2.2.12] - 2025-03-04
570
+
571
+ ### Security
572
+
573
+ - [CVE-2025-27111](https://github.com/advisories/GHSA-8cgq-6mh2-7j6v) Possible Log Injection in `Rack::Sendfile`.
574
+
575
+ ## [2.2.11] - 2025-02-12
576
+
577
+ ### Security
578
+
579
+ - [CVE-2025-25184](https://github.com/advisories/GHSA-7g2v-jj9q-g3rg) Possible Log Injection in `Rack::CommonLogger`.
580
+
581
+ ## [2.2.10] - 2024-10-14
582
+
583
+ - Fix compatibility issues with Ruby v3.4.0. ([#2248](https://github.com/rack/rack/pull/2248), [@byroot](https://github.com/byroot))
584
+
585
+ ## [2.2.9] - 2023-03-21
586
+
587
+ - Return empty when parsing a multi-part POST with only one end delimiter. ([#2104](https://github.com/rack/rack/pull/2104), [@alpaca-tc])
588
+
589
+ ## [2.2.8] - 2023-07-31
590
+
591
+ - Regenerate SPEC ([#2102](https://github.com/rack/rack/pull/2102), [@skipkayhil](https://github.com/skipkayhil))
592
+ - Limit file extension length of multipart tempfiles ([#2015](https://github.com/rack/rack/pull/2015), [@dentarg](https://github.com/dentarg))
593
+ - Fix "undefined method DelegateClass for Rack::Session::Cookie:Class" ([#2092](https://github.com/rack/rack/pull/2092), [@onigra](https://github.com/onigra) [@dchandekstark](https://github.com/dchandekstark))
594
+
595
+ ## [2.2.7] - 2023-03-13
596
+
597
+ - Correct the year number in the changelog ([#2015](https://github.com/rack/rack/pull/2015), [@kimulab](https://github.com/kimulab))
598
+ - Support underscore in host names for Rack 2.2 (Fixes [#2070](https://github.com/rack/rack/issues/2070)) ([#2015](https://github.com/rack/rack/pull/2071), [@jeremyevans](https://github.com/jeremyevans))
599
+
600
+ ## [2.2.6.4] - 2023-03-13
601
+
602
+ - [CVE-2023-27539] Avoid ReDoS in header parsing
603
+
604
+ ## [2.2.6.3] - 2023-03-02
605
+
606
+ - [CVE-2023-27530] Introduce multipart_total_part_limit to limit total parts
607
+
608
+ ## [2.2.6.2] - 2023-01-17
609
+
610
+ - [CVE-2022-44570] Fix ReDoS in Rack::Utils.get_byte_ranges
611
+
612
+ ## [2.2.6.1] - 2023-01-17
613
+
614
+ - [CVE-2022-44571] Fix ReDoS vulnerability in multipart parser
615
+ - [CVE-2022-44572] Forbid control characters in attributes (also ReDoS)
616
+
617
+ ## [2.2.6] - 2023-01-17
618
+
619
+ - Extend `Rack::MethodOverride` to handle `QueryParser::ParamsTooDeepError` error. ([#2011](https://github.com/rack/rack/pull/2011), [@byroot](https://github.com/byroot))
620
+
621
+ ## [2.2.5] - 2022-12-27
622
+
623
+ ### Fixed
624
+
625
+ - `Rack::URLMap` uses non-deprecated form of `Regexp.new`. ([#1998](https://github.com/rack/rack/pull/1998), [@weizheheng](https://github.com/weizheheng))
626
+
296
627
  ## [2.2.4] - 2022-06-30
297
628
 
298
629
  - Better support for lower case headers in `Rack::ETag` middleware. ([#1919](https://github.com/rack/rack/pull/1919), [@ioquatix](https://github.com/ioquatix))
@@ -1010,3 +1341,6 @@ Items below this line are from the previously maintained HISTORY.md and NEWS.md
1010
1341
  [@wjordan]: https://github.com/wjordan "Will Jordan"
1011
1342
  [@BlakeWilliams]: https://github.com/BlakeWilliams "Blake Williams"
1012
1343
  [@davidstosik]: https://github.com/davidstosik "David Stosik"
1344
+ [@earlopain]: https://github.com/earlopain "Earlopain"
1345
+ [@wynksaiddestroy]: https://github.com/wynksaiddestroy "Fabian Winkler"
1346
+ [@matthewd]: https://github.com/matthewd "Matthew Draper"