sinatra 4.0.0 → 4.0.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.

Potentially problematic release.


This version of sinatra might be problematic. Click here for more details.

checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 71d0bb379c736d6c251ceb424cac84dbe3a8b22d80a54473a0af1085b93b7dbf
4
- data.tar.gz: 489d48a5e4f934127e04cdafa2d0d582c5143cc2a8f476239ea5b5b0f0e492c9
3
+ metadata.gz: 931652dc91884a733d4cab3fd2679533de8a78d80a9c7d19d2cecf2798a678c6
4
+ data.tar.gz: b6b633d00b67e7318547f5b066aeee0956ecd8b448f910f829d2cf33cb2d208c
5
5
  SHA512:
6
- metadata.gz: fbe92c1867d3ebe8ddc3f707c4e9f9cf2b68bddf2556164b85083ac635650725d63f8c847b4c70d0ad2abf6793b5f1054918b0b7c4e04d303119867be84c3253
7
- data.tar.gz: 0727d88e9f5574c304dd3f31c6107a2b3e1cde96914e258c86fee529a1e922b0ff1d023f109fcc3b232f010ae21d9bdb4c365001dc7c3f658c0bd75b95e8d24d
6
+ metadata.gz: 8181093ece483ffdde4f660feb8c9bfe821260fa7af456820a0ecbafcd74a2932a835f7bee35b79d070755bb36b75d14077aa3e9fbf9ee8a33eebd92f13195ba
7
+ data.tar.gz: 280db78b6907477f15d9bdb9def5985f6ef62a70e697c61f85d00dc35a0e21397656d5ab862ee17fbafe05ff5e45c1eac1d14dfa73d75cb1e4f5d4e91f81001b
data/CHANGELOG.md CHANGED
@@ -1,3 +1,30 @@
1
+ ## 4.0.1 / 2025-05-24
2
+
3
+ * Rack 3.1 compatibility ([#2035])
4
+
5
+ * Fix malformed Content-Type headers ([#2081])
6
+
7
+ * Avoid crash for integer values in `content_type` parameters ([#2078])
8
+
9
+ * Fix compatibility with --enable-frozen-string-literal ([#2033])
10
+
11
+ * Declare missing dependencies for Ruby 3.5 ([#2032])
12
+
13
+ * Fix warning about Hash construction. ([#2028])
14
+
15
+ * Support Zeitwerk 2.7.0+ ([#2050])
16
+
17
+ * Address URI depreciation ([#2060])
18
+
19
+ [#2035]: https://github.com/sinatra/sinatra/pull/2035
20
+ [#2081]: https://github.com/sinatra/sinatra/pull/2081
21
+ [#2078]: https://github.com/sinatra/sinatra/pull/2078
22
+ [#2033]: https://github.com/sinatra/sinatra/pull/2033
23
+ [#2032]: https://github.com/sinatra/sinatra/pull/2032
24
+ [#2028]: https://github.com/sinatra/sinatra/pull/2028
25
+ [#2050]: https://github.com/sinatra/sinatra/pull/2050
26
+ [#2060]: https://github.com/sinatra/sinatra/pull/2060
27
+
1
28
  ## 4.0.0. / 2024-01-19
2
29
 
3
30
  * New: Add support for Rack 3 ([#1857])
data/Gemfile CHANGED
@@ -22,6 +22,10 @@ puma_version = nil if puma_version.empty? || (puma_version == 'stable')
22
22
  puma_version = { github: 'puma/puma' } if puma_version == 'head'
23
23
  gem 'puma', puma_version
24
24
 
25
+ zeitwerk_version = ENV['zeitwerk'].to_s
26
+ zeitwerk_version = nil if zeitwerk_version.empty? || (zeitwerk_version == 'stable')
27
+ gem 'zeitwerk', zeitwerk_version
28
+
25
29
  gem 'minitest', '~> 5.0'
26
30
  gem 'rack-test'
27
31
  gem 'rubocop', '~> 1.32.0', require: false
@@ -42,15 +46,15 @@ gem 'kramdown'
42
46
  gem 'liquid'
43
47
  gem 'markaby'
44
48
  gem 'nokogiri', '> 1.5.0'
49
+ gem 'ostruct'
45
50
  gem 'pandoc-ruby', '~> 2.0.2'
46
51
  gem 'rabl'
47
52
  gem 'rdiscount', platforms: [:ruby]
48
53
  gem 'rdoc'
49
54
  gem 'redcarpet', platforms: [:ruby]
50
55
  gem 'simplecov', require: false
51
- gem 'slim', '~> 4'
56
+ gem 'slim', '~> 5'
52
57
  gem 'yajl-ruby', platforms: [:ruby]
53
- gem 'zeitwerk'
54
58
 
55
59
  # sass-embedded depends on google-protobuf
56
60
  # which fails to be installed on JRuby and TruffleRuby under aarch64
data/VERSION CHANGED
@@ -1 +1 @@
1
- 4.0.0
1
+ 4.0.1
data/lib/sinatra/base.rb CHANGED
@@ -22,6 +22,8 @@ require 'sinatra/indifferent_hash'
22
22
  require 'sinatra/show_exceptions'
23
23
  require 'sinatra/version'
24
24
 
25
+ require_relative 'middleware/logger'
26
+
25
27
  module Sinatra
26
28
  # The request object. See Rack::Request for more info:
27
29
  # https://rubydoc.info/github/rack/rack/main/Rack/Request
@@ -294,7 +296,7 @@ module Sinatra
294
296
  def block.each; yield(call) end
295
297
  response.body = block
296
298
  elsif value
297
- unless request.head? || value.is_a?(Rack::Files::Iterator) || value.is_a?(Stream)
299
+ unless request.head? || value.is_a?(Rack::Files::BaseIterator) || value.is_a?(Stream)
298
300
  headers.delete 'content-length'
299
301
  end
300
302
  response.body = value
@@ -393,11 +395,11 @@ module Sinatra
393
395
  end
394
396
  params.delete :charset if mime_type.include? 'charset'
395
397
  unless params.empty?
396
- mime_type << (mime_type.include?(';') ? ', ' : ';')
398
+ mime_type << ';'
397
399
  mime_type << params.map do |key, val|
398
- val = val.inspect if val =~ /[";,]/
400
+ val = val.inspect if val.to_s =~ /[";,]/
399
401
  "#{key}=#{val}"
400
- end.join(', ')
402
+ end.join(';')
401
403
  end
402
404
  response['content-type'] = mime_type
403
405
  end
@@ -972,7 +974,7 @@ module Sinatra
972
974
  include Helpers
973
975
  include Templates
974
976
 
975
- URI_INSTANCE = URI::Parser.new
977
+ URI_INSTANCE = defined?(URI::RFC2396_PARSER) ? URI::RFC2396_PARSER : URI::RFC2396_Parser.new
976
978
 
977
979
  attr_accessor :app, :env, :request, :response, :params
978
980
  attr_reader :template_cache
@@ -1292,7 +1294,7 @@ module Sinatra
1292
1294
  /active_support/, # active_support require hacks
1293
1295
  %r{bundler(/(?:runtime|inline))?\.rb}, # bundler require hacks
1294
1296
  /<internal:/, # internal in ruby >= 1.9.2
1295
- %r{zeitwerk/kernel\.rb} # Zeitwerk kernel#require decorator
1297
+ %r{zeitwerk/(core_ext/)?kernel\.rb} # Zeitwerk kernel#require decorator
1296
1298
  ].freeze
1297
1299
 
1298
1300
  attr_reader :routes, :filters, :templates, :errors, :on_start_callback, :on_stop_callback
@@ -1835,7 +1837,7 @@ module Sinatra
1835
1837
  end
1836
1838
 
1837
1839
  def setup_null_logger(builder)
1838
- builder.use Rack::NullLogger
1840
+ builder.use Sinatra::Middleware::Logger, ::Logger::FATAL
1839
1841
  end
1840
1842
 
1841
1843
  def setup_common_logger(builder)
@@ -1844,9 +1846,9 @@ module Sinatra
1844
1846
 
1845
1847
  def setup_custom_logger(builder)
1846
1848
  if logging.respond_to? :to_int
1847
- builder.use Rack::Logger, logging
1849
+ builder.use Sinatra::Middleware::Logger, logging
1848
1850
  else
1849
- builder.use Rack::Logger
1851
+ builder.use Sinatra::Middleware::Logger
1850
1852
  end
1851
1853
  end
1852
1854
 
@@ -0,0 +1,21 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'logger'
4
+
5
+ module Sinatra
6
+ module Middleware
7
+ class Logger
8
+ def initialize(app, level = ::Logger::INFO)
9
+ @app, @level = app, level
10
+ end
11
+
12
+ def call(env)
13
+ logger = ::Logger.new(env[Rack::RACK_ERRORS])
14
+ logger.level = @level
15
+
16
+ env[Rack::RACK_LOGGER] = logger
17
+ @app.call(env)
18
+ end
19
+ end
20
+ end
21
+ end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Sinatra
4
- VERSION = '4.0.0'
4
+ VERSION = '4.0.1'
5
5
  end
data/sinatra.gemspec CHANGED
@@ -40,14 +40,16 @@ RubyGems 2.0 or newer is required to protect against public gem pushes. You can
40
40
  'homepage_uri' => 'http://sinatrarb.com/',
41
41
  'bug_tracker_uri' => 'https://github.com/sinatra/sinatra/issues',
42
42
  'mailing_list_uri' => 'http://groups.google.com/group/sinatrarb',
43
- 'documentation_uri' => 'https://www.rubydoc.info/gems/sinatra'
43
+ 'documentation_uri' => 'https://www.rubydoc.info/gems/sinatra',
44
+ 'rubygems_mfa_required' => 'true',
44
45
  }
45
46
 
46
47
  s.required_ruby_version = '>= 2.7.8'
47
48
 
49
+ s.add_dependency 'logger', '>= 1.6.0'
48
50
  s.add_dependency 'mustermann', '~> 3.0'
49
51
  s.add_dependency 'rack', '>= 3.0.0', '< 4'
50
- s.add_dependency 'rack-session', '>= 2.0.0', '< 3'
51
52
  s.add_dependency 'rack-protection', version
53
+ s.add_dependency 'rack-session', '>= 2.0.0', '< 3'
52
54
  s.add_dependency 'tilt', '~> 2.0'
53
55
  end
metadata CHANGED
@@ -1,18 +1,31 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sinatra
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.0.0
4
+ version: 4.0.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Blake Mizerany
8
8
  - Ryan Tomayko
9
9
  - Simon Rozet
10
10
  - Konstantin Haase
11
- autorequire:
12
11
  bindir: bin
13
12
  cert_chain: []
14
- date: 2024-01-19 00:00:00.000000000 Z
13
+ date: 1980-01-02 00:00:00.000000000 Z
15
14
  dependencies:
15
+ - !ruby/object:Gem::Dependency
16
+ name: logger
17
+ requirement: !ruby/object:Gem::Requirement
18
+ requirements:
19
+ - - ">="
20
+ - !ruby/object:Gem::Version
21
+ version: 1.6.0
22
+ type: :runtime
23
+ prerelease: false
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ requirements:
26
+ - - ">="
27
+ - !ruby/object:Gem::Version
28
+ version: 1.6.0
16
29
  - !ruby/object:Gem::Dependency
17
30
  name: mustermann
18
31
  requirement: !ruby/object:Gem::Requirement
@@ -47,6 +60,20 @@ dependencies:
47
60
  - - "<"
48
61
  - !ruby/object:Gem::Version
49
62
  version: '4'
63
+ - !ruby/object:Gem::Dependency
64
+ name: rack-protection
65
+ requirement: !ruby/object:Gem::Requirement
66
+ requirements:
67
+ - - '='
68
+ - !ruby/object:Gem::Version
69
+ version: 4.0.1
70
+ type: :runtime
71
+ prerelease: false
72
+ version_requirements: !ruby/object:Gem::Requirement
73
+ requirements:
74
+ - - '='
75
+ - !ruby/object:Gem::Version
76
+ version: 4.0.1
50
77
  - !ruby/object:Gem::Dependency
51
78
  name: rack-session
52
79
  requirement: !ruby/object:Gem::Requirement
@@ -67,20 +94,6 @@ dependencies:
67
94
  - - "<"
68
95
  - !ruby/object:Gem::Version
69
96
  version: '3'
70
- - !ruby/object:Gem::Dependency
71
- name: rack-protection
72
- requirement: !ruby/object:Gem::Requirement
73
- requirements:
74
- - - '='
75
- - !ruby/object:Gem::Version
76
- version: 4.0.0
77
- type: :runtime
78
- prerelease: false
79
- version_requirements: !ruby/object:Gem::Requirement
80
- requirements:
81
- - - '='
82
- - !ruby/object:Gem::Version
83
- version: 4.0.0
84
97
  - !ruby/object:Gem::Dependency
85
98
  name: tilt
86
99
  requirement: !ruby/object:Gem::Requirement
@@ -101,8 +114,8 @@ email: sinatrarb@googlegroups.com
101
114
  executables: []
102
115
  extensions: []
103
116
  extra_rdoc_files:
104
- - README.md
105
117
  - LICENSE
118
+ - README.md
106
119
  files:
107
120
  - ".yardopts"
108
121
  - AUTHORS.md
@@ -125,6 +138,7 @@ files:
125
138
  - lib/sinatra/images/500.png
126
139
  - lib/sinatra/indifferent_hash.rb
127
140
  - lib/sinatra/main.rb
141
+ - lib/sinatra/middleware/logger.rb
128
142
  - lib/sinatra/show_exceptions.rb
129
143
  - lib/sinatra/version.rb
130
144
  - sinatra.gemspec
@@ -138,7 +152,7 @@ metadata:
138
152
  bug_tracker_uri: https://github.com/sinatra/sinatra/issues
139
153
  mailing_list_uri: http://groups.google.com/group/sinatrarb
140
154
  documentation_uri: https://www.rubydoc.info/gems/sinatra
141
- post_install_message:
155
+ rubygems_mfa_required: 'true'
142
156
  rdoc_options:
143
157
  - "--line-numbers"
144
158
  - "--title"
@@ -159,8 +173,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
159
173
  - !ruby/object:Gem::Version
160
174
  version: '0'
161
175
  requirements: []
162
- rubygems_version: 3.5.3
163
- signing_key:
176
+ rubygems_version: 3.6.7
164
177
  specification_version: 4
165
178
  summary: Classy web-development dressed in a DSL
166
179
  test_files: []