Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package rubygem-rack for openSUSE:Factory 
checked in at 2022-12-13 18:56:53
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/rubygem-rack (Old)
 and      /work/SRC/openSUSE:Factory/.rubygem-rack.new.1835 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "rubygem-rack"

Tue Dec 13 18:56:53 2022 rev:23 rq:1042654 version:3.0.2

Changes:
--------
--- /work/SRC/openSUSE:Factory/rubygem-rack/rubygem-rack.changes        
2022-10-11 18:05:26.458074250 +0200
+++ /work/SRC/openSUSE:Factory/.rubygem-rack.new.1835/rubygem-rack.changes      
2022-12-13 18:57:19.071795836 +0100
@@ -1,0 +2,21 @@
+Wed Dec  7 11:31:08 UTC 2022 - Stephan Kulow <co...@suse.com>
+
+updated to version 3.0.2
+ see installed CHANGELOG.md
+
+  ## [3.0.2] -2022-12-05
+  
+  ### Fixed
+  
+  - `Utils.build_nested_query` URL-encodes nested field names including the 
square brackets.
+  - Allow `Rack::Response` to pass through streaming bodies. 
([#1993](https://github.com/rack/rack/pull/1993), [@ioquatix])
+  
+  ## [3.0.1] - 2022-11-18
+  
+  ### Fixed
+  
+  - `MethodOverride` does not look for an override if a request does not 
include form/parseable data.
+  - `Rack::Lint::Wrapper` correctly handles `respond_to?` with `to_ary`, 
`each`, `call` and `to_path`, forwarding to the body. 
([#1981](https://github.com/rack/rack/pull/1981), [@ioquatix])
+  
+
+-------------------------------------------------------------------

Old:
----
  rack-3.0.0.gem

New:
----
  rack-3.0.2.gem

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ rubygem-rack.spec ++++++
--- /var/tmp/diff_new_pack.ITDbqk/_old  2022-12-13 18:57:19.747799443 +0100
+++ /var/tmp/diff_new_pack.ITDbqk/_new  2022-12-13 18:57:19.751799464 +0100
@@ -24,7 +24,7 @@
 #
 
 Name:           rubygem-rack
-Version:        3.0.0
+Version:        3.0.2
 Release:        0
 %define mod_name rack
 %define mod_full_name %{mod_name}-%{version}

++++++ rack-3.0.0.gem -> rack-3.0.2.gem ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/CHANGELOG.md new/CHANGELOG.md
--- old/CHANGELOG.md    2022-09-06 18:28:21.000000000 +0200
+++ new/CHANGELOG.md    2022-12-05 06:12:56.000000000 +0100
@@ -2,6 +2,20 @@
 
 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/).
 
+## [3.0.2] -2022-12-05
+
+### Fixed
+
+- `Utils.build_nested_query` URL-encodes nested field names including the 
square brackets.
+- Allow `Rack::Response` to pass through streaming bodies. 
([#1993](https://github.com/rack/rack/pull/1993), [@ioquatix])
+
+## [3.0.1] - 2022-11-18
+
+### Fixed
+
+- `MethodOverride` does not look for an override if a request does not include 
form/parseable data.
+- `Rack::Lint::Wrapper` correctly handles `respond_to?` with `to_ary`, `each`, 
`call` and `to_path`, forwarding to the body. 
([#1981](https://github.com/rack/rack/pull/1981), [@ioquatix])
+
 ## [3.0.0] - 2022-09-06
 
 - No changes
@@ -34,7 +48,7 @@
 - `SERVER_PROTOCOL` is now a required environment key, matching the HTTP 
protocol used in the request.
 - `rack.hijack?` (partial hijack) and `rack.hijack` (full hijack) are now 
independently optional.
 - `rack.hijack_io` has been removed completely.
-- `rack.response_finished` is an optional environment key which contains an 
array of callable objects that must accept `#call(env, status, headers, error)` 
and are invoked after the response is finished (either successfully or 
unsucessfully).
+- `rack.response_finished` is an optional environment key which contains an 
array of callable objects that must accept `#call(env, status, headers, error)` 
and are invoked after the response is finished (either successfully or 
unsuccessfully).
 - It is okay to call `#close` on `rack.input` to indicate that you no longer 
need or care about the input.
 - The stream argument supplied to the streaming body and hijack must support 
`#<<` for writing output.
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/README.md new/README.md
--- old/README.md       2022-09-06 18:28:21.000000000 +0200
+++ new/README.md       2022-12-05 06:12:56.000000000 +0100
@@ -1,6 +1,6 @@
 # ![Rack](contrib/logo.webp)
 
-> **_NOTE:_** Rack v3.0.0.beta1 was recently released. Please check the 
[Upgrade
+> **_NOTE:_** Rack v3.0.0 was recently released. Please check the [Upgrade
 > Guide](UPGRADE-GUIDE.md) for more details about migrating your existing
 > servers, middlewares and applications. For detailed information on specific
 > changes, check the [Change Log](CHANGELOG.md).
@@ -23,7 +23,7 @@
 $ gem install rack --pre
 
 # or, add it to your current application gemfile:
-$ bundle add rack --version 3.0.0.beta1
+$ bundle add rack --version 3.0.0
 ```
 
 If you need features from `Rack::Session` or `bin/rackup` please add those 
gems separately.
Binary files old/checksums.yaml.gz and new/checksums.yaml.gz differ
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lib/rack/auth/basic.rb new/lib/rack/auth/basic.rb
--- old/lib/rack/auth/basic.rb  2022-09-06 18:28:21.000000000 +0200
+++ new/lib/rack/auth/basic.rb  2022-12-05 06:12:56.000000000 +0100
@@ -10,8 +10,6 @@
     #
     # Initialize with the Rack application that you want protecting,
     # and a block that checks if a username and password pair are valid.
-    #
-    # See also: <tt>example/protectedlobster.rb</tt>
 
     class Basic < AbstractHandler
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lib/rack/builder.rb new/lib/rack/builder.rb
--- old/lib/rack/builder.rb     2022-09-06 18:28:21.000000000 +0200
+++ new/lib/rack/builder.rb     2022-12-05 06:12:56.000000000 +0100
@@ -10,26 +10,23 @@
   #
   # Example:
   #
-  #  require 'rack/lobster'
-  #  app = Rack::Builder.new do
-  #    use Rack::CommonLogger
-  #    use Rack::ShowExceptions
-  #    map "/lobster" do
-  #      use Rack::Lint
-  #      run Rack::Lobster.new
-  #    end
-  #  end
+  #   app = Rack::Builder.new do
+  #     use Rack::CommonLogger
+  #     map "/ok" do
+  #       run lambda { |env| [200, {'content-type' => 'text/plain'}, ['OK']] }
+  #     end
+  #   end
   #
-  #  run app
+  #   run app
   #
   # Or
   #
-  #  app = Rack::Builder.app do
-  #    use Rack::CommonLogger
-  #    run lambda { |env| [200, {'Content-Type' => 'text/plain'}, ['OK']] }
-  #  end
+  #   app = Rack::Builder.app do
+  #     use Rack::CommonLogger
+  #     run lambda { |env| [200, {'content-type' => 'text/plain'}, ['OK']] }
+  #   end
   #
-  #  run app
+  #   run app
   #
   # +use+ adds middleware to the stack, +run+ dispatches to an application.
   # You can use +map+ to construct a Rack::URLMap in a convenient way.
@@ -180,15 +177,6 @@
     #
     #   run Heartbeat.new
     #
-    # It could also be a module:
-    #
-    #   module HelloWorld
-    #     def call(env)
-    #      [200, { "content-type" => "text/plain" }, ["Hello World"]]
-    #     end
-    #   end
-    #
-    #   run HelloWorld
     def run(app = nil, &block)
       raise ArgumentError, "Both app and block given!" if app && block_given?
 
@@ -213,21 +201,35 @@
     # the Rack application specified by run inside the block.  Other requests 
will be sent to the
     # default application specified by run outside the block.
     #
-    #   Rack::Builder.app do
+    #   class App
+    #     def call(env)
+    #       [200, {'content-type' => 'text/plain'}, ["Hello World"]]
+    #     end
+    #   end
+    #
+    #   class Heartbeat
+    #     def call(env)
+    #       [200, { "content-type" => "text/plain" }, ["OK"]]
+    #     end
+    #   end
+    #
+    #   app = Rack::Builder.app do
     #     map '/heartbeat' do
-    #       run Heartbeat
+    #       run Heartbeat.new
     #     end
-    #     run App
+    #     run App.new
     #   end
     #
+    #   run app
+    #
     # The +use+ method can also be used inside the block to specify middleware 
to run under a specific path:
     #
-    #   Rack::Builder.app do
+    #   app = Rack::Builder.app do
     #     map '/heartbeat' do
     #       use Middleware
-    #       run Heartbeat
+    #       run Heartbeat.new
     #     end
-    #     run App
+    #     run App.new
     #   end
     #
     # This example includes a piece of middleware which will run before 
+/heartbeat+ requests hit +Heartbeat+.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lib/rack/constants.rb new/lib/rack/constants.rb
--- old/lib/rack/constants.rb   2022-09-06 18:28:21.000000000 +0200
+++ new/lib/rack/constants.rb   2022-12-05 06:12:56.000000000 +0100
@@ -14,7 +14,7 @@
   SERVER_NAME       = 'SERVER_NAME'
   SERVER_PORT       = 'SERVER_PORT'
   HTTP_COOKIE       = 'HTTP_COOKIE'
-  
+
   # Response Header Keys
   CACHE_CONTROL     = 'cache-control'
   CONTENT_LENGTH    = 'content-length'
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lib/rack/headers.rb new/lib/rack/headers.rb
--- old/lib/rack/headers.rb     2022-09-06 18:28:21.000000000 +0200
+++ new/lib/rack/headers.rb     2022-12-05 06:12:56.000000000 +0100
@@ -31,7 +31,7 @@
       super(key.downcase.freeze, value)
     end
     alias store []=
-    
+
     def assoc(key)
       super(downcase_key(key))
     end
@@ -43,7 +43,7 @@
     def delete(key)
       super(downcase_key(key))
     end
-    
+
     def dig(key, *a)
       super(downcase_key(key), *a)
     end
@@ -52,7 +52,7 @@
       key = downcase_key(key)
       super
     end
-    
+
     def fetch_values(*a)
       super(*a.map!{|key| downcase_key(key)})
     end
@@ -63,34 +63,34 @@
     alias include? has_key?
     alias key? has_key?
     alias member? has_key?
-    
+
     def invert
       hash = self.class.new
       each{|key, value| hash[value] = key}
       hash
     end
-    
+
     def merge(hash, &block)
       dup.merge!(hash, &block)
     end
-    
+
     def reject(&block)
       hash = dup
       hash.reject!(&block)
       hash
     end
-    
+
     def replace(hash)
       clear
       update(hash)
     end
-    
+
     def select(&block)
       hash = dup
       hash.select!(&block)
       hash
     end
-    
+
     def to_proc
       lambda{|x| self[x]}
     end
@@ -100,10 +100,10 @@
     end
 
     def update(hash, &block)
-      hash.each do |key, value| 
+      hash.each do |key, value|
         self[key] = if block_given? && include?(key)
           block.call(key, self[key], value)
-        else 
+        else
           value
         end
       end
@@ -114,7 +114,7 @@
     def values_at(*keys)
       keys.map{|key| self[key]}
     end
-    
+
     # :nocov:
     if RUBY_VERSION >= '2.5'
     # :nocov:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lib/rack/lint.rb new/lib/rack/lint.rb
--- old/lib/rack/lint.rb        2022-09-06 18:28:21.000000000 +0200
+++ new/lib/rack/lint.rb        2022-12-05 06:12:56.000000000 +0100
@@ -629,7 +629,7 @@
         unless headers.kind_of?(Hash)
           raise LintError, "headers object should be a hash, but isn't (got 
#{headers.class} as headers)"
         end
-        
+
         if headers.frozen?
           raise LintError, "headers object should not be frozen, but is"
         end
@@ -817,8 +817,14 @@
         verify_to_path
       end
 
+      BODY_METHODS = {to_ary: true, each: true, call: true, to_path: true}
+
+      def to_path
+        @body.to_path
+      end
+
       def respond_to?(name, *)
-        if name == :to_ary
+        if BODY_METHODS.key?(name)
           @body.respond_to?(name)
         else
           super
@@ -883,7 +889,7 @@
 
         def initialize(stream)
           @stream = stream
-          
+
           REQUIRED_METHODS.each do |method_name|
             raise LintError, "Stream must respond to #{method_name}" unless 
stream.respond_to?(method_name)
           end
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lib/rack/method_override.rb 
new/lib/rack/method_override.rb
--- old/lib/rack/method_override.rb     2022-09-06 18:28:21.000000000 +0200
+++ new/lib/rack/method_override.rb     2022-12-05 06:12:56.000000000 +0100
@@ -46,7 +46,7 @@
     end
 
     def method_override_param(req)
-      req.POST[METHOD_OVERRIDE_PARAM_KEY]
+      req.POST[METHOD_OVERRIDE_PARAM_KEY] if req.form_data? || 
req.parseable_data?
     rescue Utils::InvalidParameterError, Utils::ParameterTypeError
       req.get_header(RACK_ERRORS).puts "Invalid or incomplete POST params"
     rescue EOFError
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lib/rack/request.rb new/lib/rack/request.rb
--- old/lib/rack/request.rb     2022-09-06 18:28:21.000000000 +0200
+++ new/lib/rack/request.rb     2022-12-05 06:12:56.000000000 +0100
@@ -44,7 +44,7 @@
     @x_forwarded_proto_priority = [:proto, :scheme]
 
     valid_ipv4_octet = /\.(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])/
-    
+
     trusted_proxies = Regexp.union(
       /\A127#{valid_ipv4_octet}{3}\z/,                          # localhost 
IPv4 range 127.x.x.x, per RFC-3330
       /\A::1\z/,                                                # localhost 
IPv6 ::1
@@ -54,7 +54,7 @@
       /\A192\.168#{valid_ipv4_octet}{2}\z/,                     # private IPv4 
range 192.168.x.x
       /\Alocalhost\z|\Aunix(\z|:)/i,                            # localhost 
hostname, and unix domain sockets
     )
-    
+
     self.ip_filter = lambda { |ip| trusted_proxies.match?(ip) }
 
     ALLOWED_SCHEMES = %w(https http wss ws).freeze
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lib/rack/response.rb new/lib/rack/response.rb
--- old/lib/rack/response.rb    2022-09-06 18:28:21.000000000 +0200
+++ new/lib/rack/response.rb    2022-12-05 06:12:56.000000000 +0100
@@ -43,7 +43,7 @@
     #
     # If the +body+ is +nil+, construct an empty response object with internal
     # buffering.
-    # 
+    #
     # If the +body+ responds to +to_str+, assume it's a string-like object and
     # construct a buffered response object containing using that string as the
     # initial contents of the buffer.
@@ -102,11 +102,16 @@
       CHUNKED == get_header(TRANSFER_ENCODING)
     end
 
+    def no_entity_body?
+      # The response body is an enumerable body and it is not allowed to have 
an entity body.
+      @body.respond_to?(:each) && STATUS_WITH_NO_ENTITY_BODY[@status]
+    end
+    
     # Generate a response array consistent with the requirements of the SPEC.
     # @return [Array] a 3-tuple suitable of `[status, headers, body]`
     # which is suitable to be returned from the middleware `#call(env)` method.
     def finish(&block)
-      if STATUS_WITH_NO_ENTITY_BODY[@status]
+      if no_entity_body?
         delete_header CONTENT_TYPE
         delete_header CONTENT_LENGTH
         close
@@ -333,7 +338,7 @@
             end
 
             body.close if body.respond_to?(:close)
-            
+
             @buffered = true
           else
             @buffered = false
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lib/rack/utils.rb new/lib/rack/utils.rb
--- old/lib/rack/utils.rb       2022-09-06 18:28:21.000000000 +0200
+++ new/lib/rack/utils.rb       2022-12-05 06:12:56.000000000 +0100
@@ -121,13 +121,13 @@
         }.join("&")
       when Hash
         value.map { |k, v|
-          build_nested_query(v, prefix ? "#{prefix}[#{escape(k)}]" : escape(k))
+          build_nested_query(v, prefix ? "#{prefix}[#{k}]" : k)
         }.delete_if(&:empty?).join('&')
       when nil
-        prefix
+        escape(prefix)
       else
         raise ArgumentError, "value must be a Hash" if prefix.nil?
-        "#{prefix}=#{escape(value)}"
+        "#{escape(prefix)}=#{escape(value)}"
       end
     end
 
@@ -278,7 +278,7 @@
     # If the cookie +value+ is an instance of +Hash+, it considers the 
following
     # cookie attribute keys: +domain+, +max_age+, +expires+ (must be instance
     # of +Time+), +secure+, +http_only+, +same_site+ and +value+. For more
-    # details about the interpretation of these fields, consult 
+    # details about the interpretation of these fields, consult
     # [RFC6265 Section 
5.2](https://datatracker.ietf.org/doc/html/rfc6265#section-5.2).
     #
     # An extra cookie attribute +escape_key+ can be provided to control whether
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lib/rack/version.rb new/lib/rack/version.rb
--- old/lib/rack/version.rb     2022-09-06 18:28:21.000000000 +0200
+++ new/lib/rack/version.rb     2022-12-05 06:12:56.000000000 +0100
@@ -25,7 +25,7 @@
     VERSION
   end
 
-  RELEASE = "3.0.0"
+  RELEASE = "3.0.2"
 
   # Return the Rack release as a dotted string.
   def self.release
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/metadata new/metadata
--- old/metadata        2022-09-06 18:28:21.000000000 +0200
+++ new/metadata        2022-12-05 06:12:56.000000000 +0100
@@ -1,14 +1,14 @@
 --- !ruby/object:Gem::Specification
 name: rack
 version: !ruby/object:Gem::Version
-  version: 3.0.0
+  version: 3.0.2
 platform: ruby
 authors:
 - Leah Neukirchen
 autorequire:
 bindir: bin
 cert_chain: []
-date: 2022-09-06 00:00:00.000000000 Z
+date: 2022-12-05 00:00:00.000000000 Z
 dependencies:
 - !ruby/object:Gem::Dependency
   name: minitest
@@ -164,7 +164,7 @@
     - !ruby/object:Gem::Version
       version: '0'
 requirements: []
-rubygems_version: 3.3.3
+rubygems_version: 3.3.7
 signing_key:
 specification_version: 4
 summary: A modular Ruby webserver interface.

Reply via email to