Hello community, here is the log from the commit of package rubygem-rack for openSUSE:Factory checked in at 2018-02-12 10:13:38 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/rubygem-rack (Old) and /work/SRC/openSUSE:Factory/.rubygem-rack.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "rubygem-rack" Mon Feb 12 10:13:38 2018 rev:11 rq:574055 version:2.0.4 Changes: -------- --- /work/SRC/openSUSE:Factory/rubygem-rack/rubygem-rack.changes 2017-06-08 15:02:39.225981615 +0200 +++ /work/SRC/openSUSE:Factory/.rubygem-rack.new/rubygem-rack.changes 2018-02-12 10:13:42.748753931 +0100 @@ -1,0 +2,6 @@ +Thu Feb 8 06:21:32 UTC 2018 - [email protected] + +- updated to version 2.0.4 + see installed HISTORY.md + +------------------------------------------------------------------- Old: ---- rack-2.0.3.gem New: ---- rack-2.0.4.gem ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ rubygem-rack.spec ++++++ --- /var/tmp/diff_new_pack.sNjK86/_old 2018-02-12 10:13:43.544725246 +0100 +++ /var/tmp/diff_new_pack.sNjK86/_new 2018-02-12 10:13:43.544725246 +0100 @@ -1,7 +1,7 @@ # # spec file for package rubygem-rack # -# Copyright (c) 2017 SUSE LINUX GmbH, Nuernberg, Germany. +# Copyright (c) 2018 SUSE LINUX GmbH, Nuernberg, Germany. # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -24,7 +24,7 @@ # Name: rubygem-rack -Version: 2.0.3 +Version: 2.0.4 Release: 0 %define mod_name rack %define mod_full_name %{mod_name}-%{version} @@ -36,7 +36,7 @@ BuildRequires: %{rubygem gem2rpm} BuildRequires: ruby-macros >= 5 BuildRequires: update-alternatives -Url: http://rack.github.io/ +Url: https://rack.github.io/ Source: https://rubygems.org/gems/%{mod_full_name}.gem Source1: rubygem-rack-rpmlintrc Source2: gem2rpm.yml @@ -51,7 +51,7 @@ the simplest way possible, it unifies and distills the API for web servers, web frameworks, and software in between (the so-called middleware) into a single method call. -Also see http://rack.github.io/. +Also see https://rack.github.io/. %prep ++++++ rack-2.0.3.gem -> rack-2.0.4.gem ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/README.rdoc new/README.rdoc --- old/README.rdoc 2017-05-15 18:49:44.000000000 +0200 +++ new/README.rdoc 2018-01-31 19:16:49.000000000 +0100 @@ -295,7 +295,7 @@ == Links -Rack:: <http://rack.github.io/> +Rack:: <https://rack.github.io/> Official Rack repositories:: <https://github.com/rack> Rack Bug Tracking:: <https://github.com/rack/rack/issues> rack-devel mailing list:: <https://groups.google.com/group/rack-devel> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/SPEC new/SPEC --- old/SPEC 2017-05-15 18:49:44.000000000 +0200 +++ new/SPEC 2018-01-31 19:16:49.000000000 +0100 @@ -60,8 +60,8 @@ the presence or absence of the appropriate HTTP header in the request. See - {https://tools.ietf.org/html/rfc3875#section-4.1.18 - RFC3875 section 4.1.18} for + <a href="https://tools.ietf.org/html/rfc3875#section-4.1.18"> + RFC3875 section 4.1.18</a> for specific behavior. In addition to this, the Rack environment must include these Rack-specific variables: @@ -98,12 +98,13 @@ Additional environment specifications have approved to standardized middleware APIs. None of these are required to be implemented by the server. -<tt>rack.session</tt>:: A hash like interface for storing request session data. +<tt>rack.session</tt>:: A hash like interface for storing + request session data. The store must implement: - store(key, value) (aliased as []=); - fetch(key, default = nil) (aliased as []); - delete(key); - clear; + store(key, value) (aliased as []=); + fetch(key, default = nil) (aliased as []); + delete(key); + clear; <tt>rack.logger</tt>:: A common object interface for logging messages. The object must implement: info(message, &block) 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/chunked.rb new/lib/rack/chunked.rb --- old/lib/rack/chunked.rb 2017-05-15 18:49:44.000000000 +0200 +++ new/lib/rack/chunked.rb 2018-01-31 19:16:49.000000000 +0100 @@ -24,7 +24,7 @@ size = chunk.bytesize next if size == 0 - chunk = chunk.dup.force_encoding(Encoding::BINARY) + chunk = chunk.b yield [size.to_s(16), term, chunk, term].join end yield TAIL diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lib/rack/etag.rb new/lib/rack/etag.rb --- old/lib/rack/etag.rb 2017-05-15 18:49:44.000000000 +0200 +++ new/lib/rack/etag.rb 2018-01-31 19:16:49.000000000 +0100 @@ -1,5 +1,5 @@ require 'rack' -require 'digest/md5' +require 'digest/sha2' module Rack # Automatically sets the ETag header on all String bodies. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lib/rack/lock.rb new/lib/rack/lock.rb --- old/lib/rack/lock.rb 2017-05-15 18:49:44.000000000 +0200 +++ new/lib/rack/lock.rb 2018-01-31 19:16:49.000000000 +0100 @@ -11,12 +11,21 @@ def call(env) @mutex.lock + @env = env + @old_rack_multithread = env[RACK_MULTITHREAD] begin - response = @app.call(env.merge(RACK_MULTITHREAD => false)) - returned = response << BodyProxy.new(response.pop) { @mutex.unlock } + response = @app.call(env.merge!(RACK_MULTITHREAD => false)) + returned = response << BodyProxy.new(response.pop) { unlock } ensure - @mutex.unlock unless returned + unlock unless returned end end + + private + + def unlock + @mutex.unlock + @env[RACK_MULTITHREAD] = @old_rack_multithread + end end end diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lib/rack/mock.rb new/lib/rack/mock.rb --- old/lib/rack/mock.rb 2017-05-15 18:49:44.000000000 +0200 +++ new/lib/rack/mock.rb 2018-01-31 19:16:49.000000000 +0100 @@ -128,7 +128,7 @@ end end - empty_str = String.new.force_encoding(Encoding::ASCII_8BIT) + empty_str = String.new opts[:input] ||= empty_str if String === opts[:input] rack_input = StringIO.new(opts[:input]) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lib/rack/multipart/parser.rb new/lib/rack/multipart/parser.rb --- old/lib/rack/multipart/parser.rb 2017-05-15 18:49:44.000000000 +0200 +++ new/lib/rack/multipart/parser.rb 2018-01-31 19:16:49.000000000 +0100 @@ -5,7 +5,7 @@ class MultipartPartLimitError < Errno::EMFILE; end class Parser - BUFSIZE = 16384 + BUFSIZE = 1_048_576 TEXT_PLAIN = "text/plain" TEMPFILE_FACTORY = lambda { |filename, content_type| Tempfile.new(["RackMultipart", ::File.extname(filename.gsub("\0".freeze, '%00'.freeze))]) @@ -135,7 +135,7 @@ klass = TempfilePart @open_files += 1 else - body = ''.force_encoding(Encoding::ASCII_8BIT) + body = String.new klass = BufferPart end @@ -165,15 +165,15 @@ attr_reader :state def initialize(boundary, tempfile, bufsize, query_parser) - @buf = "".force_encoding(Encoding::ASCII_8BIT) + @buf = String.new @query_parser = query_parser @params = query_parser.make_params @boundary = "--#{boundary}" - @boundary_size = @boundary.bytesize + EOL.size @bufsize = bufsize @rx = /(?:#{EOL})?#{Regexp.quote(@boundary)}(#{EOL}|--)/n + @rx_max_size = EOL.size + @boundary.bytesize + [EOL.size, '--'.size].max @full_boundary = @boundary @end_boundary = @boundary + '--' @state = :FAST_FORWARD @@ -263,15 +263,17 @@ end def handle_mime_body - if @buf =~ rx + if i = @buf.index(rx) # Save the rest. - if i = @buf.index(rx) - @collector.on_mime_body @mime_index, @buf.slice!(0, i) - @buf.slice!(0, 2) # Remove \r\n after the content - end + @collector.on_mime_body @mime_index, @buf.slice!(0, i) + @buf.slice!(0, 2) # Remove \r\n after the content @state = :CONSUME_TOKEN @mime_index += 1 else + # Save the read body part. + if @rx_max_size < @buf.size + @collector.on_mime_body @mime_index, @buf.slice!(0, @buf.size - @rx_max_size) + end :want_read end end diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lib/rack.rb new/lib/rack.rb --- old/lib/rack.rb 2017-05-15 18:49:44.000000000 +0200 +++ new/lib/rack.rb 2018-01-31 19:16:49.000000000 +0100 @@ -18,7 +18,7 @@ VERSION.join(".") end - RELEASE = "2.0.3" + RELEASE = "2.0.4" # 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 2017-05-15 18:49:44.000000000 +0200 +++ new/metadata 2018-01-31 19:16:49.000000000 +0100 @@ -1,14 +1,14 @@ --- !ruby/object:Gem::Specification name: rack version: !ruby/object:Gem::Version - version: 2.0.3 + version: 2.0.4 platform: ruby authors: - Christian Neukirchen autorequire: bindir: bin cert_chain: [] -date: 2017-05-15 00:00:00.000000000 Z +date: 2018-01-31 00:00:00.000000000 Z dependencies: - !ruby/object:Gem::Dependency name: minitest @@ -39,20 +39,6 @@ - !ruby/object:Gem::Version version: '0' - !ruby/object:Gem::Dependency - name: concurrent-ruby - requirement: !ruby/object:Gem::Requirement - requirements: - - - ">=" - - !ruby/object:Gem::Version - version: '0' - type: :development - prerelease: false - version_requirements: !ruby/object:Gem::Requirement - requirements: - - - ">=" - - !ruby/object:Gem::Version - version: '0' -- !ruby/object:Gem::Dependency name: rake requirement: !ruby/object:Gem::Requirement requirements: @@ -73,7 +59,7 @@ servers, web frameworks, and software in between (the so-called middleware) into a single method call. - Also see http://rack.github.io/. + Also see https://rack.github.io/. email: [email protected] executables: - rackup @@ -269,7 +255,7 @@ - test/testrequest.rb - test/unregistered_handler/rack/handler/unregistered.rb - test/unregistered_handler/rack/handler/unregistered_long_one.rb -homepage: http://rack.github.io/ +homepage: https://rack.github.io/ licenses: - MIT metadata: {} @@ -289,59 +275,59 @@ version: '0' requirements: [] rubyforge_project: -rubygems_version: 2.6.8 +rubygems_version: 2.7.3 signing_key: specification_version: 4 summary: a modular Ruby webserver interface test_files: -- test/spec_auth_basic.rb -- test/spec_auth_digest.rb -- test/spec_body_proxy.rb -- test/spec_builder.rb -- test/spec_cascade.rb -- test/spec_cgi.rb -- test/spec_chunked.rb -- test/spec_common_logger.rb -- test/spec_conditional_get.rb -- test/spec_config.rb -- test/spec_content_length.rb -- test/spec_content_type.rb +- test/spec_multipart.rb - test/spec_deflater.rb -- test/spec_directory.rb +- test/spec_static.rb +- test/spec_session_cookie.rb +- test/spec_session_pool.rb - test/spec_etag.rb -- test/spec_events.rb -- test/spec_fastcgi.rb -- test/spec_file.rb +- test/spec_version.rb - test/spec_handler.rb -- test/spec_head.rb -- test/spec_lint.rb -- test/spec_lobster.rb -- test/spec_lock.rb -- test/spec_logger.rb -- test/spec_media_type.rb -- test/spec_method_override.rb +- test/spec_thin.rb +- test/spec_session_abstract_id.rb - test/spec_mime.rb -- test/spec_mock.rb -- test/spec_multipart.rb -- test/spec_null_logger.rb - test/spec_recursive.rb +- test/spec_null_logger.rb +- test/spec_media_type.rb +- test/spec_cgi.rb +- test/spec_method_override.rb +- test/spec_content_type.rb +- test/spec_session_abstract_session_hash.rb - test/spec_request.rb -- test/spec_response.rb -- test/spec_rewindable_input.rb +- test/spec_chunked.rb +- test/spec_show_exceptions.rb - test/spec_runtime.rb +- test/spec_fastcgi.rb +- test/spec_common_logger.rb +- test/spec_builder.rb +- test/spec_config.rb +- test/spec_utils.rb - test/spec_sendfile.rb +- test/spec_lobster.rb +- test/spec_lint.rb +- test/spec_conditional_get.rb +- test/spec_tempfile_reaper.rb +- test/spec_mock.rb - test/spec_server.rb -- test/spec_session_abstract_id.rb -- test/spec_session_abstract_session_hash.rb -- test/spec_session_cookie.rb -- test/spec_session_memcache.rb -- test/spec_session_pool.rb -- test/spec_show_exceptions.rb +- test/spec_directory.rb +- test/spec_webrick.rb +- test/spec_response.rb +- test/spec_file.rb - test/spec_show_status.rb -- test/spec_static.rb -- test/spec_tempfile_reaper.rb -- test/spec_thin.rb +- test/spec_body_proxy.rb +- test/spec_logger.rb +- test/spec_auth_digest.rb - test/spec_urlmap.rb -- test/spec_utils.rb -- test/spec_version.rb -- test/spec_webrick.rb +- test/spec_events.rb +- test/spec_cascade.rb +- test/spec_auth_basic.rb +- test/spec_head.rb +- test/spec_lock.rb +- test/spec_rewindable_input.rb +- test/spec_session_memcache.rb +- test/spec_content_length.rb diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/rack.gemspec new/rack.gemspec --- old/rack.gemspec 2017-05-15 18:49:44.000000000 +0200 +++ new/rack.gemspec 2018-01-31 19:16:50.000000000 +0100 @@ -12,7 +12,7 @@ servers, web frameworks, and software in between (the so-called middleware) into a single method call. -Also see http://rack.github.io/. +Also see https://rack.github.io/. EOF s.files = Dir['{bin/*,contrib/*,example/*,lib/**/*,test/**/*}'] + @@ -25,11 +25,10 @@ s.author = 'Christian Neukirchen' s.email = '[email protected]' - s.homepage = 'http://rack.github.io/' + s.homepage = 'https://rack.github.io/' s.required_ruby_version = '>= 2.2.2' s.add_development_dependency 'minitest', "~> 5.0" s.add_development_dependency 'minitest-sprint' - s.add_development_dependency 'concurrent-ruby' s.add_development_dependency 'rake' end diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/test/spec_lock.rb new/test/spec_lock.rb --- old/test/spec_lock.rb 2017-05-15 18:49:44.000000000 +0200 +++ new/test/spec_lock.rb 2018-01-31 19:16:50.000000000 +0100 @@ -147,7 +147,8 @@ }, false) env = Rack::MockRequest.env_for("/") env['rack.multithread'].must_equal true - app.call(env) + _, _, body = app.call(env) + body.close env['rack.multithread'].must_equal true end @@ -191,4 +192,13 @@ lambda { app.call(env) }.must_raise Exception lock.synchronized.must_equal false end + + it "not replace the environment" do + env = Rack::MockRequest.env_for("/") + app = lock_app(lambda { |inner_env| [200, {"Content-Type" => "text/plain"}, [inner_env.object_id.to_s]] }) + + _, _, body = app.call(env) + + body.to_enum.to_a.must_equal [env.object_id.to_s] + end end diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/test/spec_webrick.rb new/test/spec_webrick.rb --- old/test/spec_webrick.rb 2017-05-15 18:49:45.000000000 +0200 +++ new/test/spec_webrick.rb 2018-01-31 19:16:50.000000000 +0100 @@ -1,7 +1,6 @@ require 'minitest/autorun' require 'rack/mock' -require 'concurrent/utility/native_integer' -require 'concurrent/atomic/count_down_latch' +require 'thread' require File.expand_path('../testrequest', __FILE__) Thread.abort_on_exception = true @@ -120,8 +119,7 @@ end it "provide a .run" do - block_ran = false - latch = Concurrent::CountDownLatch.new 1 + queue = Queue.new t = Thread.new do Rack::Handler::WEBrick.run(lambda {}, @@ -132,13 +130,12 @@ :AccessLog => []}) { |server| block_ran = true assert_kind_of WEBrick::HTTPServer, server - @s = server - latch.count_down + queue.push(server) } end - latch.wait - @s.shutdown + server = queue.pop + server.shutdown t.join end
