sinatra-contrib 2.2.3 → 3.1.0
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/README.md +8 -6
- data/Rakefile +25 -23
- data/ideas.md +2 -2
- data/lib/sinatra/capture.rb +5 -3
- data/lib/sinatra/config_file.rb +4 -9
- data/lib/sinatra/content_for.rb +5 -4
- data/lib/sinatra/contrib/all.rb +2 -0
- data/lib/sinatra/contrib/setup.rb +3 -1
- data/lib/sinatra/contrib/version.rb +3 -2
- data/lib/sinatra/contrib.rb +2 -1
- data/lib/sinatra/cookies.rb +47 -34
- data/lib/sinatra/custom_logger.rb +2 -1
- data/lib/sinatra/engine_tracking.rb +6 -37
- data/lib/sinatra/extension.rb +4 -2
- data/lib/sinatra/json.rb +9 -10
- data/lib/sinatra/link_header.rb +7 -7
- data/lib/sinatra/multi_route.rb +2 -0
- data/lib/sinatra/namespace.rb +30 -21
- data/lib/sinatra/quiet_logger.rb +8 -3
- data/lib/sinatra/reloader.rb +33 -18
- data/lib/sinatra/required_params.rb +3 -1
- data/lib/sinatra/respond_with.rb +41 -30
- data/lib/sinatra/runner.rb +25 -16
- data/lib/sinatra/streaming.rb +11 -11
- data/lib/sinatra/test_helpers.rb +8 -22
- data/lib/sinatra/webdav.rb +7 -6
- data/sinatra-contrib.gemspec +44 -50
- metadata +50 -149
- data/lib/sinatra/decompile.rb +0 -5
data/lib/sinatra/streaming.rb
CHANGED
@@ -1,7 +1,8 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'sinatra/base'
|
2
4
|
|
3
5
|
module Sinatra
|
4
|
-
|
5
6
|
# = Sinatra::Streaming
|
6
7
|
#
|
7
8
|
# Sinatra 1.3 introduced the +stream+ helper. This addon improves the
|
@@ -84,13 +85,14 @@ module Sinatra
|
|
84
85
|
end
|
85
86
|
|
86
87
|
module Stream
|
87
|
-
|
88
88
|
attr_accessor :app, :lineno, :pos, :transformer, :closed
|
89
89
|
alias tell pos
|
90
90
|
alias closed? closed
|
91
91
|
|
92
92
|
def self.extended(obj)
|
93
|
-
obj.closed
|
93
|
+
obj.closed = false
|
94
|
+
obj.lineno = 0
|
95
|
+
obj.pos = 0
|
94
96
|
obj.callback { obj.closed = true }
|
95
97
|
obj.errback { obj.closed = true }
|
96
98
|
end
|
@@ -108,6 +110,7 @@ module Sinatra
|
|
108
110
|
def each
|
109
111
|
# that way body.each.map { ... } works
|
110
112
|
return self unless block_given?
|
113
|
+
|
111
114
|
super
|
112
115
|
end
|
113
116
|
|
@@ -120,7 +123,8 @@ module Sinatra
|
|
120
123
|
@transformer ||= nil
|
121
124
|
|
122
125
|
if @transformer
|
123
|
-
inner
|
126
|
+
inner = @transformer
|
127
|
+
outer = block
|
124
128
|
block = proc { |value| outer[inner[value]] }
|
125
129
|
end
|
126
130
|
@transformer = block
|
@@ -132,7 +136,7 @@ module Sinatra
|
|
132
136
|
data.to_s.bytesize
|
133
137
|
end
|
134
138
|
|
135
|
-
alias syswrite
|
139
|
+
alias syswrite write
|
136
140
|
alias write_nonblock write
|
137
141
|
|
138
142
|
def print(*args)
|
@@ -154,7 +158,7 @@ module Sinatra
|
|
154
158
|
end
|
155
159
|
|
156
160
|
def close_read
|
157
|
-
raise IOError,
|
161
|
+
raise IOError, 'closing non-duplex IO for reading'
|
158
162
|
end
|
159
163
|
|
160
164
|
def closed_read?
|
@@ -171,10 +175,6 @@ module Sinatra
|
|
171
175
|
settings.default_encoding
|
172
176
|
end
|
173
177
|
|
174
|
-
def closed?
|
175
|
-
@closed
|
176
|
-
end
|
177
|
-
|
178
178
|
def settings
|
179
179
|
app.settings
|
180
180
|
end
|
@@ -184,7 +184,7 @@ module Sinatra
|
|
184
184
|
end
|
185
185
|
|
186
186
|
def not_open_for_reading(*)
|
187
|
-
raise IOError,
|
187
|
+
raise IOError, 'not opened for reading'
|
188
188
|
end
|
189
189
|
|
190
190
|
alias bytes not_open_for_reading
|
data/lib/sinatra/test_helpers.rb
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'sinatra/base'
|
2
4
|
require 'rack'
|
3
5
|
begin
|
@@ -13,19 +15,6 @@ module Sinatra
|
|
13
15
|
# Helper methods to ease testing your Sinatra application. Partly extracted
|
14
16
|
# from Sinatra. Testing framework agnostic.
|
15
17
|
module TestHelpers
|
16
|
-
# Test variant of session, which exposes a `global_env`.
|
17
|
-
class Session < Rack::Test::Session
|
18
|
-
def global_env
|
19
|
-
@global_env ||= {}
|
20
|
-
end
|
21
|
-
|
22
|
-
private
|
23
|
-
|
24
|
-
def default_env
|
25
|
-
super.merge global_env
|
26
|
-
end
|
27
|
-
end
|
28
|
-
|
29
18
|
include Rack::Test::Methods
|
30
19
|
extend Forwardable
|
31
20
|
attr_accessor :settings
|
@@ -36,7 +25,7 @@ module Sinatra
|
|
36
25
|
#
|
37
26
|
# Body of last_response
|
38
27
|
#
|
39
|
-
# @see
|
28
|
+
# @see https://www.rubydoc.info/github/rack/rack/main/Rack/Response#body-instance_method
|
40
29
|
# @return [String] body of the last response
|
41
30
|
|
42
31
|
# @!method headers
|
@@ -115,7 +104,7 @@ module Sinatra
|
|
115
104
|
# @!group Instance Methods delegated to rack_mock_session
|
116
105
|
# @!method cookie_jar
|
117
106
|
#
|
118
|
-
# Returns a {
|
107
|
+
# Returns a {https://www.rubydoc.info/github/rack/rack-test/Rack/Test/CookieJar Rack::Test::CookieJar}.
|
119
108
|
#
|
120
109
|
# @return [Rack::Test::CookieJar]
|
121
110
|
def_delegators :rack_mock_session, :cookie_jar
|
@@ -171,7 +160,7 @@ module Sinatra
|
|
171
160
|
# @param params [Hash]
|
172
161
|
# @param env [Hash]
|
173
162
|
def options(uri, params = {}, env = {}, &block)
|
174
|
-
env = env_for(uri, env.merge(:
|
163
|
+
env = env_for(uri, env.merge(method: 'OPTIONS', params: params))
|
175
164
|
current_session.send(:process_request, uri, env, &block)
|
176
165
|
end
|
177
166
|
end
|
@@ -183,7 +172,7 @@ module Sinatra
|
|
183
172
|
# @param params [Hash]
|
184
173
|
# @param env [Hash]
|
185
174
|
def patch(uri, params = {}, env = {}, &block)
|
186
|
-
env = env_for(uri, env.merge(:
|
175
|
+
env = env_for(uri, env.merge(method: 'PATCH', params: params))
|
187
176
|
current_session.send(:process_request, uri, env, &block)
|
188
177
|
end
|
189
178
|
end
|
@@ -200,7 +189,8 @@ module Sinatra
|
|
200
189
|
# @return [Hash] Session of last request, or the empty Hash
|
201
190
|
def session
|
202
191
|
return {} unless last_request?
|
203
|
-
raise Rack::Test::Error,
|
192
|
+
raise Rack::Test::Error, 'session not enabled for app' unless last_env['rack.session'] || app.session?
|
193
|
+
|
204
194
|
last_request.session
|
205
195
|
end
|
206
196
|
|
@@ -208,9 +198,5 @@ module Sinatra
|
|
208
198
|
def last_env
|
209
199
|
last_request.env
|
210
200
|
end
|
211
|
-
|
212
|
-
def build_rack_test_session(name) # :nodoc:
|
213
|
-
Session.new rack_mock_session(name)
|
214
|
-
end
|
215
201
|
end
|
216
202
|
end
|
data/lib/sinatra/webdav.rb
CHANGED
@@ -1,7 +1,8 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'sinatra/base'
|
2
4
|
|
3
5
|
module Sinatra
|
4
|
-
|
5
6
|
# = Sinatra::WebDAV
|
6
7
|
#
|
7
8
|
# This extensions provides WebDAV verbs, as defined by RFC 4918
|
@@ -37,8 +38,8 @@ module Sinatra
|
|
37
38
|
module Request
|
38
39
|
def self.included(base)
|
39
40
|
base.class_eval do
|
40
|
-
|
41
|
-
|
41
|
+
alias_method :_safe?, :safe?
|
42
|
+
alias_method :_idempotent?, :idempotent?
|
42
43
|
|
43
44
|
def safe?
|
44
45
|
_safe? or propfind?
|
@@ -70,9 +71,9 @@ module Sinatra
|
|
70
71
|
request_method == 'MOVE'
|
71
72
|
end
|
72
73
|
|
73
|
-
#def lock?
|
74
|
+
# def lock?
|
74
75
|
# request_method == 'LOCK'
|
75
|
-
#end
|
76
|
+
# end
|
76
77
|
|
77
78
|
def unlock?
|
78
79
|
request_method == 'UNLOCK'
|
@@ -84,7 +85,7 @@ module Sinatra
|
|
84
85
|
def mkcol(path, opts = {}, &bk) route 'MKCOL', path, opts, &bk end
|
85
86
|
def copy(path, opts = {}, &bk) route 'COPY', path, opts, &bk end
|
86
87
|
def move(path, opts = {}, &bk) route 'MOVE', path, opts, &bk end
|
87
|
-
#def lock(path, opts = {}, &bk) route 'LOCK', path, opts, &bk end
|
88
|
+
# def lock(path, opts = {}, &bk) route 'LOCK', path, opts, &bk end
|
88
89
|
def unlock(path, opts = {}, &bk) route 'UNLOCK', path, opts, &bk end
|
89
90
|
end
|
90
91
|
|
data/sinatra-contrib.gemspec
CHANGED
@@ -1,65 +1,59 @@
|
|
1
|
-
#
|
1
|
+
# frozen_string_literal: true
|
2
2
|
|
3
|
-
version = File.read(File.expand_path(
|
3
|
+
version = File.read(File.expand_path('../VERSION', __dir__)).strip
|
4
4
|
|
5
5
|
Gem::Specification.new do |s|
|
6
|
-
s.name =
|
6
|
+
s.name = 'sinatra-contrib'
|
7
7
|
s.version = version
|
8
|
-
s.description =
|
9
|
-
s.homepage =
|
10
|
-
s.license =
|
11
|
-
s.summary = s.description
|
12
|
-
s.authors = [
|
13
|
-
s.email =
|
14
|
-
s.files = Dir[
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
8
|
+
s.description = 'Collection of useful Sinatra extensions'
|
9
|
+
s.homepage = 'http://sinatrarb.com/contrib/'
|
10
|
+
s.license = 'MIT'
|
11
|
+
s.summary = "#{s.description}."
|
12
|
+
s.authors = ['https://github.com/sinatra/sinatra/graphs/contributors']
|
13
|
+
s.email = 'sinatrarb@googlegroups.com'
|
14
|
+
s.files = Dir['lib/**/*.rb'] + [
|
15
|
+
'LICENSE',
|
16
|
+
'README.md',
|
17
|
+
'Rakefile',
|
18
|
+
'ideas.md',
|
19
|
+
'sinatra-contrib.gemspec'
|
20
20
|
]
|
21
21
|
|
22
|
-
|
23
|
-
|
24
|
-
'source_code_uri' => 'https://github.com/sinatra/sinatra/tree/master/sinatra-contrib',
|
25
|
-
'homepage_uri' => 'http://sinatrarb.com/contrib/',
|
26
|
-
'documentation_uri' => 'https://www.rubydoc.info/gems/sinatra-contrib'
|
27
|
-
}
|
28
|
-
else
|
29
|
-
raise <<-EOF
|
22
|
+
unless s.respond_to?(:metadata)
|
23
|
+
raise <<-WARN
|
30
24
|
RubyGems 2.0 or newer is required to protect against public gem pushes. You can update your rubygems version by running:
|
31
25
|
gem install rubygems-update
|
32
26
|
update_rubygems:
|
33
27
|
gem update --system
|
34
|
-
|
28
|
+
WARN
|
35
29
|
end
|
36
30
|
|
37
|
-
s.
|
31
|
+
s.metadata = {
|
32
|
+
'source_code_uri' => 'https://github.com/sinatra/sinatra/tree/main/sinatra-contrib',
|
33
|
+
'homepage_uri' => 'http://sinatrarb.com/contrib/',
|
34
|
+
'documentation_uri' => 'https://www.rubydoc.info/gems/sinatra-contrib',
|
35
|
+
'rubygems_mfa_required' => 'true'
|
36
|
+
}
|
38
37
|
|
39
|
-
s.
|
40
|
-
s.add_dependency "mustermann", "~> 2.0"
|
41
|
-
s.add_dependency "tilt", "~> 2.0"
|
42
|
-
s.add_dependency "rack-protection", version
|
43
|
-
s.add_dependency "multi_json"
|
38
|
+
s.required_ruby_version = '>= 2.6.0'
|
44
39
|
|
45
|
-
s.
|
46
|
-
s.
|
47
|
-
s.
|
48
|
-
s.
|
49
|
-
s.
|
50
|
-
|
51
|
-
s.add_development_dependency
|
52
|
-
s.add_development_dependency
|
53
|
-
s.add_development_dependency
|
54
|
-
s.add_development_dependency
|
55
|
-
s.add_development_dependency
|
56
|
-
s.add_development_dependency
|
57
|
-
s.add_development_dependency
|
58
|
-
s.add_development_dependency
|
59
|
-
s.add_development_dependency
|
60
|
-
s.add_development_dependency
|
61
|
-
s.add_development_dependency
|
62
|
-
s.add_development_dependency
|
63
|
-
s.add_development_dependency
|
64
|
-
s.add_development_dependency "rack-test"
|
40
|
+
s.add_dependency 'multi_json'
|
41
|
+
s.add_dependency 'mustermann', '~> 3.0'
|
42
|
+
s.add_dependency 'rack-protection', version
|
43
|
+
s.add_dependency 'sinatra', version
|
44
|
+
s.add_dependency 'tilt', '~> 2.0'
|
45
|
+
|
46
|
+
s.add_development_dependency 'asciidoctor'
|
47
|
+
s.add_development_dependency 'builder'
|
48
|
+
s.add_development_dependency 'erubi'
|
49
|
+
s.add_development_dependency 'haml'
|
50
|
+
s.add_development_dependency 'liquid'
|
51
|
+
s.add_development_dependency 'markaby'
|
52
|
+
s.add_development_dependency 'nokogiri'
|
53
|
+
s.add_development_dependency 'rack-test', '~> 2'
|
54
|
+
s.add_development_dependency 'rake', '>= 12.3.3'
|
55
|
+
s.add_development_dependency 'redcarpet'
|
56
|
+
s.add_development_dependency 'rspec', '~> 3'
|
57
|
+
s.add_development_dependency 'sass-embedded', '~> 1.54'
|
58
|
+
s.add_development_dependency 'slim'
|
65
59
|
end
|