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 +4 -4
- data/CHANGELOG.md +27 -0
- data/Gemfile +6 -2
- data/VERSION +1 -1
- data/lib/sinatra/base.rb +11 -9
- data/lib/sinatra/middleware/logger.rb +21 -0
- data/lib/sinatra/version.rb +1 -1
- data/sinatra.gemspec +4 -2
- metadata +34 -21
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 931652dc91884a733d4cab3fd2679533de8a78d80a9c7d19d2cecf2798a678c6
|
4
|
+
data.tar.gz: b6b633d00b67e7318547f5b066aeee0956ecd8b448f910f829d2cf33cb2d208c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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', '~>
|
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.
|
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::
|
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 <<
|
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::
|
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}
|
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
|
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
|
1849
|
+
builder.use Sinatra::Middleware::Logger, logging
|
1848
1850
|
else
|
1849
|
-
builder.use
|
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
|
data/lib/sinatra/version.rb
CHANGED
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.
|
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:
|
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
|
-
|
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.
|
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: []
|