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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +22 -0
- data/README.md +1 -1
- data/acfs.gemspec +1 -1
- data/lib/acfs/location.rb +2 -2
- data/lib/acfs/middleware/json.rb +3 -3
- data/lib/acfs/request.rb +1 -0
- data/lib/acfs/resource/attributes.rb +1 -1
- data/lib/acfs/stub.rb +1 -1
- data/lib/acfs/version.rb +2 -2
- data/lib/acfs.rb +3 -4
- data/spec/acfs/collection_spec.rb +16 -10
- data/spec/acfs/global_spec.rb +2 -2
- data/spec/acfs/middleware/json_spec.rb +16 -0
- data/spec/acfs/operation_spec.rb +2 -2
- data/spec/acfs/request/callbacks_spec.rb +2 -2
- data/spec/acfs/resource/locatable_spec.rb +5 -11
- data/spec/acfs/resource/query_methods_spec.rb +1 -1
- data/spec/acfs/resource/validation_spec.rb +3 -4
- data/spec/acfs/runner_spec.rb +6 -6
- data/spec/acfs/stub_spec.rb +6 -4
- data/spec/acfs_spec.rb +4 -4
- data/vendor/bundle/ruby/4.0.0/bundler/gems/rubocop-config-2b861962124a/README.md +23 -0
- 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
- data/vendor/bundle/ruby/4.0.0/gems/actionpack-8.1.3/CHANGELOG.md +514 -0
- data/vendor/bundle/ruby/{3.4.0/gems/actionpack-8.0.1 → 4.0.0/gems/actionpack-8.1.3}/README.rdoc +1 -1
- data/vendor/bundle/ruby/4.0.0/gems/actionview-8.1.3/CHANGELOG.md +191 -0
- data/vendor/bundle/ruby/{3.4.0/gems/actionview-8.0.1 → 4.0.0/gems/actionview-8.1.3}/README.rdoc +1 -1
- data/vendor/bundle/ruby/4.0.0/gems/activemodel-8.1.3/CHANGELOG.md +68 -0
- data/vendor/bundle/ruby/{3.4.0/gems/activemodel-8.0.1 → 4.0.0/gems/activemodel-8.1.3}/README.rdoc +1 -1
- data/vendor/bundle/ruby/4.0.0/gems/activesupport-8.1.3/CHANGELOG.md +561 -0
- data/vendor/bundle/ruby/{3.4.0/gems/activesupport-8.0.1 → 4.0.0/gems/activesupport-8.1.3}/README.rdoc +1 -1
- data/vendor/bundle/ruby/{3.4.0/gems/addressable-2.8.7 → 4.0.0/gems/addressable-2.9.0}/CHANGELOG.md +71 -46
- data/vendor/bundle/ruby/{3.4.0/gems/addressable-2.8.7 → 4.0.0/gems/addressable-2.9.0}/README.md +6 -6
- data/vendor/bundle/ruby/4.0.0/gems/ast-2.4.3/LICENSE.MIT +20 -0
- data/vendor/bundle/ruby/4.0.0/gems/ast-2.4.3/README.YARD.md +12 -0
- data/vendor/bundle/ruby/{3.4.0/gems/bigdecimal-3.1.9 → 4.0.0/gems/bigdecimal-4.1.2}/bigdecimal.gemspec +6 -1
- 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
- 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
- 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
- data/vendor/bundle/ruby/4.0.0/gems/connection_pool-3.0.2/connection_pool.gemspec +35 -0
- 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
- 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
- data/vendor/bundle/ruby/4.0.0/gems/docile-1.4.1/LICENSE +21 -0
- data/vendor/bundle/ruby/4.0.0/gems/docile-1.4.1/README.md +409 -0
- data/vendor/bundle/ruby/4.0.0/gems/docile-1.4.1/docile.gemspec +36 -0
- data/vendor/bundle/ruby/{3.4.0/gems/drb-2.2.1 → 4.0.0/gems/drb-2.2.3}/drb.gemspec +2 -1
- data/vendor/bundle/ruby/{3.4.0/gems/ethon-0.16.0 → 4.0.0/gems/ethon-0.18.0}/CHANGELOG.md +43 -1
- data/vendor/bundle/ruby/{3.4.0/gems/ethon-0.16.0 → 4.0.0/gems/ethon-0.18.0}/README.md +1 -1
- data/vendor/bundle/ruby/4.0.0/gems/ethon-0.18.0/ethon.gemspec +37 -0
- 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
- 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
- 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
- data/vendor/bundle/ruby/{3.4.0/gems/hashdiff-1.1.2 → 4.0.0/gems/hashdiff-1.2.1}/README.md +26 -1
- data/vendor/bundle/ruby/4.0.0/gems/hashdiff-1.2.1/changelog.md +127 -0
- data/vendor/bundle/ruby/{3.4.0/gems/i18n-1.14.7 → 4.0.0/gems/i18n-1.15.2}/README.md +13 -1
- data/vendor/bundle/ruby/{3.4.0/gems/json-2.10.1 → 4.0.0/gems/json-2.19.9}/README.md +43 -1
- data/vendor/bundle/ruby/{3.4.0/gems/json-2.10.1 → 4.0.0/gems/json-2.19.9}/json.gemspec +2 -3
- data/vendor/bundle/ruby/4.0.0/gems/language_server-protocol-3.17.0.5/LICENSE.txt +21 -0
- data/vendor/bundle/ruby/4.0.0/gems/language_server-protocol-3.17.0.5/README.md +88 -0
- data/vendor/bundle/ruby/4.0.0/gems/lint_roller-1.1.0/CHANGELOG.md +15 -0
- data/vendor/bundle/ruby/4.0.0/gems/lint_roller-1.1.0/LICENSE.txt +21 -0
- data/vendor/bundle/ruby/4.0.0/gems/lint_roller-1.1.0/README.md +173 -0
- data/vendor/bundle/ruby/{3.4.0/gems/loofah-2.24.0 → 4.0.0/gems/loofah-2.25.1}/CHANGELOG.md +17 -0
- data/vendor/bundle/ruby/{3.4.0/gems/minitest-5.25.4 → 4.0.0/gems/minitest-6.0.6}/README.rdoc +33 -105
- data/vendor/bundle/ruby/4.0.0/gems/msgpack-1.8.3/ChangeLog +383 -0
- data/vendor/bundle/ruby/4.0.0/gems/msgpack-1.8.3/LICENSE +177 -0
- data/vendor/bundle/ruby/4.0.0/gems/msgpack-1.8.3/README.md +302 -0
- data/vendor/bundle/ruby/4.0.0/gems/msgpack-1.8.3/msgpack.gemspec +41 -0
- data/vendor/bundle/ruby/4.0.0/gems/multi_json-1.21.1/LICENSE.md +20 -0
- data/vendor/bundle/ruby/4.0.0/gems/multi_json-1.21.1/README.md +281 -0
- 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
- 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
- data/vendor/bundle/ruby/4.0.0/gems/opentelemetry-api-1.10.0/CHANGELOG.md +219 -0
- 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
- data/vendor/bundle/ruby/4.0.0/gems/opentelemetry-common-0.25.0/CHANGELOG.md +110 -0
- 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
- data/vendor/bundle/ruby/4.0.0/gems/parallel-2.1.0/MIT-LICENSE.txt +20 -0
- 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
- data/vendor/bundle/ruby/4.0.0/gems/parser-3.3.11.1/parser.gemspec +43 -0
- data/vendor/bundle/ruby/4.0.0/gems/prism-1.9.0/CHANGELOG.md +786 -0
- data/vendor/bundle/ruby/4.0.0/gems/prism-1.9.0/LICENSE.md +7 -0
- data/vendor/bundle/ruby/4.0.0/gems/prism-1.9.0/README.md +143 -0
- data/vendor/bundle/ruby/4.0.0/gems/prism-1.9.0/prism.gemspec +172 -0
- data/vendor/bundle/ruby/4.0.0/gems/public_suffix-7.0.5/CHANGELOG.md +649 -0
- 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
- 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
- data/vendor/bundle/ruby/{3.4.0/gems/rack-3.1.10 → 4.0.0/gems/rack-3.2.6}/CHANGELOG.md +338 -4
- data/vendor/bundle/ruby/{3.4.0/gems/rack-3.1.10 → 4.0.0/gems/rack-3.2.6}/README.md +76 -20
- 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
- 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
- data/vendor/bundle/ruby/4.0.0/gems/rainbow-3.1.1/Changelog.md +101 -0
- data/vendor/bundle/ruby/4.0.0/gems/rainbow-3.1.1/LICENSE +20 -0
- data/vendor/bundle/ruby/4.0.0/gems/rainbow-3.1.1/README.markdown +227 -0
- data/vendor/bundle/ruby/{3.4.0/gems/rake-13.2.1 → 4.0.0/gems/rake-13.4.2}/README.rdoc +5 -5
- data/vendor/bundle/ruby/{3.4.0/gems/rake-13.2.1 → 4.0.0/gems/rake-13.4.2}/rake.gemspec +3 -2
- 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
- data/vendor/bundle/ruby/4.0.0/gems/regexp_parser-2.12.0/LICENSE +22 -0
- data/vendor/bundle/ruby/4.0.0/gems/regexp_parser-2.12.0/regexp_parser.gemspec +36 -0
- 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
- 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
- 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
- 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
- data/vendor/bundle/ruby/4.0.0/gems/rubocop-1.88.0/LICENSE.txt +20 -0
- data/vendor/bundle/ruby/4.0.0/gems/rubocop-1.88.0/README.md +255 -0
- data/vendor/bundle/ruby/4.0.0/gems/rubocop-ast-1.49.1/LICENSE.txt +20 -0
- data/vendor/bundle/ruby/4.0.0/gems/rubocop-ast-1.49.1/README.md +54 -0
- data/vendor/bundle/ruby/4.0.0/gems/rubocop-capybara-2.23.0/CHANGELOG.md +116 -0
- data/vendor/bundle/ruby/4.0.0/gems/rubocop-capybara-2.23.0/MIT-LICENSE.md +21 -0
- data/vendor/bundle/ruby/4.0.0/gems/rubocop-capybara-2.23.0/README.md +91 -0
- data/vendor/bundle/ruby/4.0.0/gems/rubocop-factory_bot-2.28.0/CHANGELOG.md +135 -0
- data/vendor/bundle/ruby/4.0.0/gems/rubocop-factory_bot-2.28.0/MIT-LICENSE.md +21 -0
- data/vendor/bundle/ruby/4.0.0/gems/rubocop-factory_bot-2.28.0/README.md +91 -0
- data/vendor/bundle/ruby/4.0.0/gems/rubocop-performance-1.26.1/LICENSE.txt +20 -0
- data/vendor/bundle/ruby/4.0.0/gems/rubocop-performance-1.26.1/README.md +100 -0
- data/vendor/bundle/ruby/4.0.0/gems/rubocop-rspec-3.10.2/CHANGELOG.md +1136 -0
- data/vendor/bundle/ruby/4.0.0/gems/rubocop-rspec-3.10.2/MIT-LICENSE.md +21 -0
- data/vendor/bundle/ruby/4.0.0/gems/rubocop-rspec-3.10.2/README.md +112 -0
- data/vendor/bundle/ruby/4.0.0/gems/rubocop-rspec_rails-2.32.0/CHANGELOG.md +98 -0
- data/vendor/bundle/ruby/4.0.0/gems/rubocop-rspec_rails-2.32.0/MIT-LICENSE.md +21 -0
- data/vendor/bundle/ruby/4.0.0/gems/rubocop-rspec_rails-2.32.0/README.md +93 -0
- data/vendor/bundle/ruby/4.0.0/gems/ruby-progressbar-1.13.0/LICENSE.txt +19 -0
- data/vendor/bundle/ruby/4.0.0/gems/ruby-progressbar-1.13.0/README.md +131 -0
- data/vendor/bundle/ruby/4.0.0/gems/simplecov-0.22.0/CHANGELOG.md +191 -0
- data/vendor/bundle/ruby/4.0.0/gems/simplecov-0.22.0/LICENSE +20 -0
- data/vendor/bundle/ruby/4.0.0/gems/simplecov-0.22.0/README.md +974 -0
- data/vendor/bundle/ruby/4.0.0/gems/simplecov-cobertura-3.2.0/LICENSE +202 -0
- data/vendor/bundle/ruby/4.0.0/gems/simplecov-cobertura-3.2.0/README.md +65 -0
- data/vendor/bundle/ruby/4.0.0/gems/simplecov-cobertura-3.2.0/simplecov-cobertura.gemspec +29 -0
- data/vendor/bundle/ruby/4.0.0/gems/simplecov-html-0.13.2/CHANGELOG.md +114 -0
- data/vendor/bundle/ruby/4.0.0/gems/simplecov-html-0.13.2/LICENSE +20 -0
- data/vendor/bundle/ruby/4.0.0/gems/simplecov-html-0.13.2/README.md +30 -0
- data/vendor/bundle/ruby/4.0.0/gems/simplecov_json_formatter-0.1.4/CHANGELOG.md +13 -0
- data/vendor/bundle/ruby/4.0.0/gems/simplecov_json_formatter-0.1.4/README.md +29 -0
- data/vendor/bundle/ruby/{3.4.0/gems/thor-1.3.2 → 4.0.0/gems/thor-1.5.0}/README.md +1 -2
- data/vendor/bundle/ruby/{3.4.0/gems/thor-1.3.2 → 4.0.0/gems/thor-1.5.0}/thor.gemspec +3 -3
- data/vendor/bundle/ruby/{3.4.0/gems/typhoeus-1.4.1 → 4.0.0/gems/typhoeus-1.6.0}/CHANGELOG.md +56 -1
- data/vendor/bundle/ruby/{3.4.0/gems/typhoeus-1.4.1 → 4.0.0/gems/typhoeus-1.6.0}/README.md +2 -2
- data/vendor/bundle/ruby/{3.4.0/gems/typhoeus-1.4.1 → 4.0.0/gems/typhoeus-1.6.0}/typhoeus.gemspec +14 -4
- data/vendor/bundle/ruby/4.0.0/gems/unicode-display_width-3.2.0/CHANGELOG.md +299 -0
- data/vendor/bundle/ruby/4.0.0/gems/unicode-display_width-3.2.0/MIT-LICENSE.txt +22 -0
- data/vendor/bundle/ruby/4.0.0/gems/unicode-display_width-3.2.0/README.md +194 -0
- data/vendor/bundle/ruby/4.0.0/gems/unicode-emoji-4.2.0/CHANGELOG.md +202 -0
- data/vendor/bundle/ruby/4.0.0/gems/unicode-emoji-4.2.0/MIT-LICENSE.txt +20 -0
- data/vendor/bundle/ruby/4.0.0/gems/unicode-emoji-4.2.0/README.md +205 -0
- data/vendor/bundle/ruby/4.0.0/gems/unicode-emoji-4.2.0/unicode-emoji.gemspec +22 -0
- data/vendor/bundle/ruby/{3.4.0/gems/uri-1.0.2 → 4.0.0/gems/uri-1.1.1}/README.md +1 -1
- data/vendor/bundle/ruby/{3.4.0/gems/webmock-3.25.0 → 4.0.0/gems/webmock-3.26.2}/CHANGELOG.md +38 -0
- data/vendor/bundle/ruby/{3.4.0/gems/webmock-3.25.0 → 4.0.0/gems/webmock-3.26.2}/README.md +6 -0
- data/vendor/bundle/ruby/{3.4.0/specifications/actionpack-8.0.1.gemspec → 4.0.0/specifications/actionpack-8.1.3.gemspec} +9 -9
- data/vendor/bundle/ruby/{3.4.0/specifications/actionview-8.0.1.gemspec → 4.0.0/specifications/actionview-8.1.3.gemspec} +9 -9
- data/vendor/bundle/ruby/{3.4.0/specifications/activemodel-8.0.1.gemspec → 4.0.0/specifications/activemodel-8.1.3.gemspec} +7 -7
- data/vendor/bundle/ruby/{3.4.0/specifications/activesupport-8.0.1.gemspec → 4.0.0/specifications/activesupport-8.1.3.gemspec} +7 -7
- data/vendor/bundle/ruby/{3.4.0/specifications/addressable-2.8.7.gemspec → 4.0.0/specifications/addressable-2.9.0.gemspec} +7 -8
- data/vendor/bundle/ruby/{3.4.0 → 4.0.0}/specifications/appraisal-2.5.0.gemspec +1 -1
- data/vendor/bundle/ruby/4.0.0/specifications/ast-2.4.3.gemspec +29 -0
- data/vendor/bundle/ruby/{3.4.0/specifications/base64-0.2.0.gemspec → 4.0.0/specifications/base64-0.3.0.gemspec} +6 -6
- data/vendor/bundle/ruby/{3.4.0/specifications/bigdecimal-3.1.9.gemspec → 4.0.0/specifications/bigdecimal-4.1.2.gemspec} +6 -6
- data/vendor/bundle/ruby/{3.4.0 → 4.0.0}/specifications/builder-3.3.0.gemspec +1 -1
- 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
- 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
- data/vendor/bundle/ruby/{3.4.0/specifications/crack-1.0.0.gemspec → 4.0.0/specifications/crack-1.0.1.gemspec} +4 -4
- data/vendor/bundle/ruby/{3.4.0 → 4.0.0}/specifications/crass-1.0.6.gemspec +1 -1
- 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
- data/vendor/bundle/ruby/4.0.0/specifications/docile-1.4.1.gemspec +22 -0
- data/vendor/bundle/ruby/{3.4.0/specifications/drb-2.2.1.gemspec → 4.0.0/specifications/drb-2.2.3.gemspec} +6 -6
- data/vendor/bundle/ruby/{3.4.0 → 4.0.0}/specifications/erubi-1.13.1.gemspec +1 -1
- data/vendor/bundle/ruby/4.0.0/specifications/ethon-0.18.0.gemspec +27 -0
- 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
- data/vendor/bundle/ruby/{3.4.0/specifications/hashdiff-1.1.2.gemspec → 4.0.0/specifications/hashdiff-1.2.1.gemspec} +4 -4
- data/vendor/bundle/ruby/{3.4.0/specifications/i18n-1.14.7.gemspec → 4.0.0/specifications/i18n-1.15.2.gemspec} +6 -6
- data/vendor/bundle/ruby/{3.4.0/specifications/json-2.10.1.gemspec → 4.0.0/specifications/json-2.19.9.gemspec} +0 -0
- data/vendor/bundle/ruby/4.0.0/specifications/language_server-protocol-3.17.0.5.gemspec +31 -0
- data/vendor/bundle/ruby/4.0.0/specifications/lint_roller-1.1.0.gemspec +22 -0
- data/vendor/bundle/ruby/{3.4.0/specifications/logger-1.6.6.gemspec → 4.0.0/specifications/logger-1.7.0.gemspec} +4 -4
- data/vendor/bundle/ruby/{3.4.0/specifications/loofah-2.24.0.gemspec → 4.0.0/specifications/loofah-2.25.1.gemspec} +5 -5
- data/vendor/bundle/ruby/4.0.0/specifications/minitest-6.0.6.gemspec +35 -0
- data/vendor/bundle/ruby/4.0.0/specifications/msgpack-1.8.3.gemspec +36 -0
- data/vendor/bundle/ruby/4.0.0/specifications/multi_json-1.21.1.gemspec +22 -0
- 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
- 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
- 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
- data/vendor/bundle/ruby/4.0.0/specifications/parallel-2.1.0.gemspec +21 -0
- data/vendor/bundle/ruby/4.0.0/specifications/parser-3.3.11.1.gemspec +37 -0
- data/vendor/bundle/ruby/4.0.0/specifications/prism-1.9.0.gemspec +24 -0
- 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
- data/vendor/bundle/ruby/{3.4.0 → 4.0.0}/specifications/racc-1.8.1.gemspec +1 -1
- data/vendor/bundle/ruby/{3.4.0/specifications/rack-3.1.10.gemspec → 4.0.0/specifications/rack-3.2.6.gemspec} +7 -7
- 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
- data/vendor/bundle/ruby/{3.4.0 → 4.0.0}/specifications/rack-test-2.2.0.gemspec +1 -1
- 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
- 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
- data/vendor/bundle/ruby/4.0.0/specifications/rainbow-3.1.1.gemspec +25 -0
- data/vendor/bundle/ruby/{3.4.0/specifications/rake-13.2.1.gemspec → 4.0.0/specifications/rake-13.4.2.gemspec} +6 -6
- 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
- data/vendor/bundle/ruby/4.0.0/specifications/regexp_parser-2.12.0.gemspec +22 -0
- data/vendor/bundle/ruby/{3.4.0/specifications/rexml-3.4.0.gemspec → 4.0.0/specifications/rexml-3.4.4.gemspec} +6 -6
- data/vendor/bundle/ruby/{3.4.0/specifications/rspec-3.13.0.gemspec → 4.0.0/specifications/rspec-3.13.2.gemspec} +9 -9
- 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
- data/vendor/bundle/ruby/4.0.0/specifications/rspec-expectations-3.13.5.gemspec +29 -0
- data/vendor/bundle/ruby/4.0.0/specifications/rspec-mocks-3.13.8.gemspec +29 -0
- 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
- data/vendor/bundle/ruby/4.0.0/specifications/rubocop-1.88.0.gemspec +39 -0
- data/vendor/bundle/ruby/4.0.0/specifications/rubocop-ast-1.49.1.gemspec +29 -0
- data/vendor/bundle/ruby/4.0.0/specifications/rubocop-capybara-2.23.0.gemspec +28 -0
- data/vendor/bundle/ruby/4.0.0/specifications/rubocop-factory_bot-2.28.0.gemspec +28 -0
- data/vendor/bundle/ruby/4.0.0/specifications/rubocop-performance-1.26.1.gemspec +30 -0
- data/vendor/bundle/ruby/4.0.0/specifications/rubocop-rspec-3.10.2.gemspec +30 -0
- data/vendor/bundle/ruby/4.0.0/specifications/rubocop-rspec_rails-2.32.0.gemspec +29 -0
- data/vendor/bundle/ruby/4.0.0/specifications/ruby-progressbar-1.13.0.gemspec +29 -0
- data/vendor/bundle/ruby/{3.4.0 → 4.0.0}/specifications/securerandom-0.4.1.gemspec +1 -1
- data/vendor/bundle/ruby/4.0.0/specifications/simplecov-0.22.0.gemspec +28 -0
- data/vendor/bundle/ruby/4.0.0/specifications/simplecov-cobertura-3.2.0.gemspec +29 -0
- data/vendor/bundle/ruby/4.0.0/specifications/simplecov-html-0.13.2.gemspec +22 -0
- data/vendor/bundle/ruby/4.0.0/specifications/simplecov_json_formatter-0.1.4.gemspec +21 -0
- data/vendor/bundle/ruby/{3.4.0/specifications/thor-1.3.2.gemspec → 4.0.0/specifications/thor-1.5.0.gemspec} +8 -8
- data/vendor/bundle/ruby/4.0.0/specifications/typhoeus-1.6.0.gemspec +26 -0
- data/vendor/bundle/ruby/{3.4.0 → 4.0.0}/specifications/tzinfo-2.0.6.gemspec +1 -1
- data/vendor/bundle/ruby/4.0.0/specifications/unicode-display_width-3.2.0.gemspec +30 -0
- data/vendor/bundle/ruby/4.0.0/specifications/unicode-emoji-4.2.0.gemspec +22 -0
- data/vendor/bundle/ruby/{3.4.0/specifications/uri-1.0.2.gemspec → 4.0.0/specifications/uri-1.1.1.gemspec} +5 -5
- data/vendor/bundle/ruby/{3.4.0 → 4.0.0}/specifications/useragent-0.16.11.gemspec +1 -1
- data/vendor/bundle/ruby/{3.4.0/specifications/webmock-3.25.0.gemspec → 4.0.0/specifications/webmock-3.26.2.gemspec} +7 -8
- metadata +277 -206
- data/vendor/bundle/ruby/3.4.0/bundler/gems/rubocop-config-67802c9d1826/README.md +0 -23
- data/vendor/bundle/ruby/3.4.0/gems/actionpack-8.0.1/CHANGELOG.md +0 -205
- data/vendor/bundle/ruby/3.4.0/gems/actionview-8.0.1/CHANGELOG.md +0 -67
- data/vendor/bundle/ruby/3.4.0/gems/activemodel-8.0.1/CHANGELOG.md +0 -110
- data/vendor/bundle/ruby/3.4.0/gems/activesupport-8.0.1/CHANGELOG.md +0 -157
- data/vendor/bundle/ruby/3.4.0/gems/addressable-2.8.7/addressable.gemspec +0 -28
- data/vendor/bundle/ruby/3.4.0/gems/benchmark-0.4.0/README.md +0 -138
- data/vendor/bundle/ruby/3.4.0/gems/benchmark-0.4.0/benchmark.gemspec +0 -32
- data/vendor/bundle/ruby/3.4.0/gems/connection_pool-2.5.0/connection_pool.gemspec +0 -24
- data/vendor/bundle/ruby/3.4.0/gems/ethon-0.16.0/ethon.gemspec +0 -26
- data/vendor/bundle/ruby/3.4.0/gems/hashdiff-1.1.2/changelog.md +0 -119
- data/vendor/bundle/ruby/3.4.0/gems/logger-1.6.6/logger.gemspec +0 -28
- data/vendor/bundle/ruby/3.4.0/gems/multi_json-1.15.0/CHANGELOG.md +0 -275
- data/vendor/bundle/ruby/3.4.0/gems/multi_json-1.15.0/LICENSE.md +0 -20
- data/vendor/bundle/ruby/3.4.0/gems/multi_json-1.15.0/README.md +0 -121
- data/vendor/bundle/ruby/3.4.0/gems/opentelemetry-api-1.4.0/CHANGELOG.md +0 -188
- data/vendor/bundle/ruby/3.4.0/gems/opentelemetry-common-0.21.0/CHANGELOG.md +0 -94
- data/vendor/bundle/ruby/3.4.0/gems/public_suffix-6.0.1/CHANGELOG.md +0 -491
- data/vendor/bundle/ruby/3.4.0/gems/rexml-3.4.0/LICENSE.txt +0 -22
- data/vendor/bundle/ruby/3.4.0/gems/rspec-collection_matchers-1.2.1/Changelog.md +0 -68
- data/vendor/bundle/ruby/3.4.0/gems/rspec-collection_matchers-1.2.1/README.md +0 -76
- data/vendor/bundle/ruby/3.4.0/gems/rspec-collection_matchers-1.2.1/rspec-collection_matchers.gemspec +0 -33
- data/vendor/bundle/ruby/3.4.0/gems/rspec-its-2.0.0/Changelog.md +0 -73
- data/vendor/bundle/ruby/3.4.0/gems/rspec-its-2.0.0/LICENSE.txt +0 -27
- data/vendor/bundle/ruby/3.4.0/gems/rspec-its-2.0.0/README.md +0 -104
- data/vendor/bundle/ruby/3.4.0/gems/rspec-its-2.0.0/rspec-its.gemspec +0 -31
- data/vendor/bundle/ruby/3.4.0/specifications/benchmark-0.4.0.gemspec +0 -23
- data/vendor/bundle/ruby/3.4.0/specifications/ethon-0.16.0.gemspec +0 -24
- data/vendor/bundle/ruby/3.4.0/specifications/minitest-5.25.4.gemspec +0 -31
- data/vendor/bundle/ruby/3.4.0/specifications/multi_json-1.15.0.gemspec +0 -26
- data/vendor/bundle/ruby/3.4.0/specifications/rspec-collection_matchers-1.2.1.gemspec +0 -27
- data/vendor/bundle/ruby/3.4.0/specifications/rspec-expectations-3.13.3.gemspec +0 -33
- data/vendor/bundle/ruby/3.4.0/specifications/rspec-its-2.0.0.gemspec +0 -27
- data/vendor/bundle/ruby/3.4.0/specifications/rspec-mocks-3.13.2.gemspec +0 -33
- data/vendor/bundle/ruby/3.4.0/specifications/typhoeus-1.4.1.gemspec +0 -24
- /data/vendor/bundle/ruby/{3.4.0/bundler/gems/rubocop-config-67802c9d1826 → 4.0.0/bundler/gems/rubocop-config-2b861962124a}/LICENSE +0 -0
- /data/vendor/bundle/ruby/{3.4.0/gems/actionpack-8.0.1 → 4.0.0/gems/actionpack-8.1.3}/MIT-LICENSE +0 -0
- /data/vendor/bundle/ruby/{3.4.0/gems/actionview-8.0.1 → 4.0.0/gems/actionview-8.1.3}/MIT-LICENSE +0 -0
- /data/vendor/bundle/ruby/{3.4.0/gems/activemodel-8.0.1 → 4.0.0/gems/activemodel-8.1.3}/MIT-LICENSE +0 -0
- /data/vendor/bundle/ruby/{3.4.0/gems/activesupport-8.0.1 → 4.0.0/gems/activesupport-8.1.3}/MIT-LICENSE +0 -0
- /data/vendor/bundle/ruby/{3.4.0/gems/addressable-2.8.7 → 4.0.0/gems/addressable-2.9.0}/LICENSE.txt +0 -0
- /data/vendor/bundle/ruby/{3.4.0 → 4.0.0}/gems/appraisal-2.5.0/MIT-LICENSE +0 -0
- /data/vendor/bundle/ruby/{3.4.0 → 4.0.0}/gems/appraisal-2.5.0/README.md +0 -0
- /data/vendor/bundle/ruby/{3.4.0 → 4.0.0}/gems/appraisal-2.5.0/appraisal.gemspec +0 -0
- /data/vendor/bundle/ruby/{3.4.0/gems/base64-0.2.0 → 4.0.0/gems/base64-0.3.0}/README.md +0 -0
- /data/vendor/bundle/ruby/{3.4.0/gems/bigdecimal-3.1.9 → 4.0.0/gems/bigdecimal-4.1.2}/LICENSE +0 -0
- /data/vendor/bundle/ruby/{3.4.0 → 4.0.0}/gems/builder-3.3.0/MIT-LICENSE +0 -0
- /data/vendor/bundle/ruby/{3.4.0 → 4.0.0}/gems/builder-3.3.0/README.md +0 -0
- /data/vendor/bundle/ruby/{3.4.0 → 4.0.0}/gems/builder-3.3.0/builder.gemspec +0 -0
- /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
- /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
- /data/vendor/bundle/ruby/{3.4.0/gems/crack-1.0.0 → 4.0.0/gems/crack-1.0.1}/LICENSE +0 -0
- /data/vendor/bundle/ruby/{3.4.0/gems/crack-1.0.0 → 4.0.0/gems/crack-1.0.1}/README.md +0 -0
- /data/vendor/bundle/ruby/{3.4.0 → 4.0.0}/gems/crass-1.0.6/LICENSE +0 -0
- /data/vendor/bundle/ruby/{3.4.0 → 4.0.0}/gems/crass-1.0.6/README.md +0 -0
- /data/vendor/bundle/ruby/{3.4.0 → 4.0.0}/gems/crass-1.0.6/crass.gemspec +0 -0
- /data/vendor/bundle/ruby/{3.4.0/gems/base64-0.2.0 → 4.0.0/gems/drb-2.2.3}/LICENSE.txt +0 -0
- /data/vendor/bundle/ruby/{3.4.0 → 4.0.0}/gems/erubi-1.13.1/CHANGELOG +0 -0
- /data/vendor/bundle/ruby/{3.4.0 → 4.0.0}/gems/erubi-1.13.1/MIT-LICENSE +0 -0
- /data/vendor/bundle/ruby/{3.4.0 → 4.0.0}/gems/erubi-1.13.1/README.rdoc +0 -0
- /data/vendor/bundle/ruby/{3.4.0/gems/ethon-0.16.0 → 4.0.0/gems/ethon-0.18.0}/LICENSE +0 -0
- /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
- /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
- /data/vendor/bundle/ruby/{3.4.0/gems/hashdiff-1.1.2 → 4.0.0/gems/hashdiff-1.2.1}/LICENSE +0 -0
- /data/vendor/bundle/ruby/{3.4.0/gems/hashdiff-1.1.2 → 4.0.0/gems/hashdiff-1.2.1}/hashdiff.gemspec +0 -0
- /data/vendor/bundle/ruby/{3.4.0/gems/i18n-1.14.7 → 4.0.0/gems/i18n-1.15.2}/MIT-LICENSE +0 -0
- /data/vendor/bundle/ruby/{3.4.0/gems/logger-1.6.6 → 4.0.0/gems/logger-1.7.0}/README.md +0 -0
- /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
- /data/vendor/bundle/ruby/{3.4.0/gems/loofah-2.24.0 → 4.0.0/gems/loofah-2.25.1}/README.md +0 -0
- /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
- /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
- /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
- /data/vendor/bundle/ruby/{3.4.0 → 4.0.0}/gems/racc-1.8.1/ChangeLog +0 -0
- /data/vendor/bundle/ruby/{3.4.0 → 4.0.0}/gems/racc-1.8.1/README.ja.rdoc +0 -0
- /data/vendor/bundle/ruby/{3.4.0 → 4.0.0}/gems/racc-1.8.1/README.rdoc +0 -0
- /data/vendor/bundle/ruby/{3.4.0/gems/rack-3.1.10 → 4.0.0/gems/rack-3.2.6}/MIT-LICENSE +0 -0
- /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
- /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
- /data/vendor/bundle/ruby/{3.4.0 → 4.0.0}/gems/rack-test-2.2.0/MIT-LICENSE.txt +0 -0
- /data/vendor/bundle/ruby/{3.4.0 → 4.0.0}/gems/rack-test-2.2.0/README.md +0 -0
- /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
- /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
- /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
- /data/vendor/bundle/ruby/{3.4.0/gems/rake-13.2.1 → 4.0.0/gems/rake-13.4.2}/MIT-LICENSE +0 -0
- /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
- /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
- /data/vendor/bundle/ruby/{3.4.0/gems/drb-2.2.1 → 4.0.0/gems/rexml-3.4.4}/LICENSE.txt +0 -0
- /data/vendor/bundle/ruby/{3.4.0/gems/rexml-3.4.0 → 4.0.0/gems/rexml-3.4.4}/README.md +0 -0
- /data/vendor/bundle/ruby/{3.4.0/gems/rspec-3.13.0 → 4.0.0/gems/rspec-3.13.2}/LICENSE.md +0 -0
- /data/vendor/bundle/ruby/{3.4.0/gems/rspec-3.13.0 → 4.0.0/gems/rspec-3.13.2}/README.md +0 -0
- /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
- /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
- /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
- /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
- /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
- /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
- /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
- /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
- /data/vendor/bundle/ruby/{3.4.0 → 4.0.0}/gems/securerandom-0.4.1/README.md +0 -0
- /data/vendor/bundle/ruby/{3.4.0/gems/thor-1.3.2 → 4.0.0/gems/thor-1.5.0}/LICENSE.md +0 -0
- /data/vendor/bundle/ruby/{3.4.0/gems/typhoeus-1.4.1 → 4.0.0/gems/typhoeus-1.6.0}/LICENSE +0 -0
- /data/vendor/bundle/ruby/{3.4.0 → 4.0.0}/gems/tzinfo-2.0.6/LICENSE +0 -0
- /data/vendor/bundle/ruby/{3.4.0 → 4.0.0}/gems/tzinfo-2.0.6/README.md +0 -0
- /data/vendor/bundle/ruby/{3.4.0 → 4.0.0}/gems/useragent-0.16.11/LICENSE +0 -0
- /data/vendor/bundle/ruby/{3.4.0 → 4.0.0}/gems/useragent-0.16.11/README.md +0 -0
- /data/vendor/bundle/ruby/{3.4.0/gems/webmock-3.25.0 → 4.0.0/gems/webmock-3.26.2}/LICENSE +0 -0
data/vendor/bundle/ruby/{3.4.0/gems/public_suffix-6.0.1 → 4.0.0/gems/public_suffix-7.0.5}/README.md
RENAMED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
#
|
|
1
|
+
# PublicSuffix for Ruby
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
`PublicSuffix` is a Ruby domain name parser based on the [Public Suffix List](https://publicsuffix.org/).
|
|
4
4
|
|
|
5
5
|
[](https://github.com/weppos/publicsuffix-ruby/actions/workflows/tests.yml)
|
|
6
6
|
[](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
|
-
|
|
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
|
|
109
|
+
## Fully qualified domain names
|
|
110
110
|
|
|
111
|
-
This library automatically recognizes Fully Qualified Domain Names. A FQDN is a domain name that
|
|
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
|
|
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
|
-
##
|
|
151
|
+
## Adding custom domains
|
|
152
152
|
|
|
153
|
-
|
|
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
|
|
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
|
|
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
|
|
183
|
+
## Does PublicSuffix make network requests?
|
|
184
184
|
|
|
185
|
-
No.
|
|
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
|
-
##
|
|
188
|
+
## Terminology
|
|
189
189
|
|
|
190
|
-
|
|
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
|
-
-
|
|
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
|
-
|
|
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
|
-
|
|
199
|
+
## Documentation and support
|
|
201
200
|
|
|
201
|
+
### Documentation
|
|
202
202
|
|
|
203
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
212
|
+
### Enterprise support
|
|
211
213
|
|
|
212
|
-
|
|
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
|
-
|
|
217
|
+
## Security and vulnerability reporting
|
|
217
218
|
|
|
218
|
-
|
|
219
|
+
For full information and details about our security policy, please visit [`SECURITY.md`](SECURITY.md).
|
|
220
|
+
|
|
221
|
+
|
|
222
|
+
## Changelog
|
|
219
223
|
|
|
220
|
-
|
|
224
|
+
See [CHANGELOG.md](CHANGELOG.md) for details.
|
|
221
225
|
|
|
222
|
-
|
|
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/
|
|
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/
|
|
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
|
-
|
|
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
|
|
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"
|