sinatra-contrib 2.0.8.1 → 2.2.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.
- checksums.yaml +4 -4
- data/README.md +3 -0
- data/lib/sinatra/config_file.rb +5 -1
- data/lib/sinatra/contrib/setup.rb +3 -5
- data/lib/sinatra/contrib/version.rb +1 -1
- data/lib/sinatra/contrib.rb +16 -16
- data/lib/sinatra/namespace.rb +9 -3
- data/lib/sinatra/quiet_logger.rb +50 -0
- data/lib/sinatra/reloader.rb +2 -2
- data/lib/sinatra/respond_with.rb +2 -2
- data/sinatra-contrib.gemspec +1 -2
- metadata +12 -26
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 9c39f2f87ea6fe310e1ee1ba3b6e59d358bba08e7c5262ac1c3b929a7f960913
|
4
|
+
data.tar.gz: d089938141342b810a03f360623a38361bdd9535031c385fa2d33202119de48e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5b12a1e1e513525d3bed0845ce085099c2869a8518c65bf7a64fbb0dc1aa563a9f4b3eb459c0b54ff43e9eb9bc7953ad4e4d8f281c279a339fe2958ecde5815c
|
7
|
+
data.tar.gz: db98ec6a5d297b0fc553a021d02e1339c3561070e962e12685bbe7852c9268aeb43008841254dbd4a9a7e2c352b1d1d20a2651c3fc23507c7997bedc2de0eb7d
|
data/README.md
CHANGED
@@ -67,6 +67,9 @@ Currently included:
|
|
67
67
|
* [`sinatra/test_helpers`][sinatra-test-helpers]: Helper methods to ease testing your Sinatra
|
68
68
|
application. Partly extracted from Sinatra. Testing framework agnostic
|
69
69
|
|
70
|
+
* `sinatra/quiet_logger`: Extension to exclude specific pathes from access log.
|
71
|
+
It works by patching Rack::CommonLogger
|
72
|
+
|
70
73
|
## Installation
|
71
74
|
|
72
75
|
Add `gem 'sinatra-contrib'` to *Gemfile*, then execute `bundle install`.
|
data/lib/sinatra/config_file.rb
CHANGED
@@ -124,7 +124,11 @@ module Sinatra
|
|
124
124
|
raise UnsupportedConfigType unless ['.yml', '.yaml', '.erb'].include?(File.extname(file))
|
125
125
|
logger.info "loading config file '#{file}'" if logging? && respond_to?(:logger)
|
126
126
|
document = ERB.new(IO.read(file)).result
|
127
|
-
yaml =
|
127
|
+
yaml = begin
|
128
|
+
YAML.load(document, aliases: true)
|
129
|
+
rescue ArgumentError
|
130
|
+
YAML.load(document)
|
131
|
+
end
|
128
132
|
config = config_for_env(yaml)
|
129
133
|
config.each_pair { |key, value| set(key, value) }
|
130
134
|
end
|
@@ -1,6 +1,5 @@
|
|
1
1
|
require 'sinatra/base'
|
2
2
|
require 'sinatra/contrib/version'
|
3
|
-
require 'backports/rails/string' # for String#underscore
|
4
3
|
|
5
4
|
module Sinatra
|
6
5
|
module Contrib
|
@@ -9,16 +8,15 @@ module Sinatra
|
|
9
8
|
@extensions ||= {:helpers => [], :register => []}
|
10
9
|
end
|
11
10
|
|
12
|
-
def register(name, path
|
11
|
+
def register(name, path)
|
13
12
|
autoload name, path, :register
|
14
13
|
end
|
15
14
|
|
16
|
-
def helpers(name, path
|
15
|
+
def helpers(name, path)
|
17
16
|
autoload name, path, :helpers
|
18
17
|
end
|
19
18
|
|
20
|
-
def autoload(name, path
|
21
|
-
path ||= "sinatra/#{name.to_s.underscore}"
|
19
|
+
def autoload(name, path, method = nil)
|
22
20
|
extensions[method] << name if method
|
23
21
|
Sinatra.autoload(name, path)
|
24
22
|
end
|
data/lib/sinatra/contrib.rb
CHANGED
@@ -7,32 +7,32 @@ module Sinatra
|
|
7
7
|
# or breaks if external dependencies are missing. Will extend
|
8
8
|
# Sinatra::Application by default.
|
9
9
|
module Common
|
10
|
-
register :ConfigFile
|
11
|
-
register :MultiRoute
|
12
|
-
register :Namespace
|
13
|
-
register :RespondWith
|
10
|
+
register :ConfigFile, 'sinatra/config_file'
|
11
|
+
register :MultiRoute, 'sinatra/multi_route'
|
12
|
+
register :Namespace, 'sinatra/namespace'
|
13
|
+
register :RespondWith, 'sinatra/respond_with'
|
14
14
|
|
15
|
-
helpers :Capture
|
16
|
-
helpers :ContentFor
|
17
|
-
helpers :Cookies
|
18
|
-
helpers :EngineTracking
|
19
|
-
helpers :JSON
|
20
|
-
helpers :LinkHeader
|
21
|
-
helpers :Streaming
|
22
|
-
helpers :RequiredParams
|
15
|
+
helpers :Capture, 'sinatra/capture'
|
16
|
+
helpers :ContentFor, 'sinatra/content_for'
|
17
|
+
helpers :Cookies, 'sinatra/cookies'
|
18
|
+
helpers :EngineTracking, 'sinatra/engine_tracking'
|
19
|
+
helpers :JSON, 'sinatra/json'
|
20
|
+
helpers :LinkHeader, 'sinatra/link_header'
|
21
|
+
helpers :Streaming, 'sinatra/streaming'
|
22
|
+
helpers :RequiredParams, 'sinatra/required_params'
|
23
23
|
end
|
24
24
|
|
25
25
|
##
|
26
26
|
# Other extensions you don't want to be loaded unless needed.
|
27
27
|
module Custom
|
28
|
-
# register :Compass
|
29
|
-
register :Reloader
|
28
|
+
# register :Compass, 'sinatra/compass'
|
29
|
+
register :Reloader, 'sinatra/reloader'
|
30
30
|
end
|
31
31
|
|
32
32
|
##
|
33
33
|
# Stuff that aren't Sinatra extensions, technically.
|
34
|
-
autoload :Extension
|
35
|
-
autoload :TestHelpers
|
34
|
+
autoload :Extension, 'sinatra/extension'
|
35
|
+
autoload :TestHelpers, 'sinatra/test_helpers'
|
36
36
|
end
|
37
37
|
|
38
38
|
register Sinatra::Contrib::Common
|
data/lib/sinatra/namespace.rb
CHANGED
@@ -224,6 +224,12 @@ module Sinatra
|
|
224
224
|
include SharedMethods
|
225
225
|
attr_reader :base, :templates
|
226
226
|
|
227
|
+
ALLOWED_ENGINES = [
|
228
|
+
:erb, :erubi, :erubis, :haml, :hamlit, :builder, :nokogiri, :sass, :scss,
|
229
|
+
:less, :liquid, :markdown, :textile, :rdoc, :asciidoc, :radius, :markaby,
|
230
|
+
:rabl, :slim, :creole, :mediawiki, :coffee, :stylus, :yajl, :wlang
|
231
|
+
]
|
232
|
+
|
227
233
|
def self.prefixed(*names)
|
228
234
|
names.each { |n| define_method(n) { |*a, &b| prefixed(n, *a, &b) }}
|
229
235
|
end
|
@@ -278,8 +284,8 @@ module Sinatra
|
|
278
284
|
end
|
279
285
|
|
280
286
|
def set(key, value = self, &block)
|
281
|
-
|
282
|
-
|
287
|
+
return key.each { |k,v| set(k, v) } if key.respond_to?(:each) and block.nil? and value == self
|
288
|
+
raise ArgumentError, "may not set #{key}" unless ([:views] + ALLOWED_ENGINES).include?(key)
|
283
289
|
block ||= proc { value }
|
284
290
|
singleton_class.send(:define_method, key, &block)
|
285
291
|
end
|
@@ -332,7 +338,7 @@ module Sinatra
|
|
332
338
|
def prefixed(method, pattern = nil, conditions = {}, &block)
|
333
339
|
default = %r{(?:/.*)?} if method == :before or method == :after
|
334
340
|
pattern, conditions = compile pattern, conditions, default
|
335
|
-
result = base.send(method, pattern, conditions, &block)
|
341
|
+
result = base.send(method, pattern, **conditions, &block)
|
336
342
|
invoke_hook :route_added, method.to_s.upcase, pattern, block
|
337
343
|
result
|
338
344
|
end
|
@@ -0,0 +1,50 @@
|
|
1
|
+
module Sinatra
|
2
|
+
# = Sinatra::QuietLogger
|
3
|
+
#
|
4
|
+
# QuietLogger extension allows you to define paths excluded
|
5
|
+
# from logging using the +quiet_logger_prefixes+ setting.
|
6
|
+
# It is inspired from rails quiet_logger, but handles multiple paths.
|
7
|
+
#
|
8
|
+
# == Usage
|
9
|
+
#
|
10
|
+
# === Classic Application
|
11
|
+
#
|
12
|
+
# You have to require the quiet_logger, set the prefixes
|
13
|
+
# and register the extension in your application.
|
14
|
+
#
|
15
|
+
# require 'sinatra'
|
16
|
+
# require 'sinatra/quiet_logger'
|
17
|
+
#
|
18
|
+
# set :quiet_logger_prefixes, %w(css js images fonts)
|
19
|
+
# register Sinatra::QuietLogger
|
20
|
+
#
|
21
|
+
# === Modular Application
|
22
|
+
#
|
23
|
+
# The same for modular application:
|
24
|
+
#
|
25
|
+
# require 'sinatra/base'
|
26
|
+
# require 'sinatra/quiet_logger'
|
27
|
+
#
|
28
|
+
# set :quiet_logger_prefixes, %w(css js images fonts)
|
29
|
+
#
|
30
|
+
# class App < Sinatra::Base
|
31
|
+
# register Sinatra::QuietLogger
|
32
|
+
# end
|
33
|
+
#
|
34
|
+
module QuietLogger
|
35
|
+
|
36
|
+
def self.registered(app)
|
37
|
+
quiet_logger_prefixes = app.settings.quiet_logger_prefixes.join('|') rescue ''
|
38
|
+
return warn('You need to specify the paths you wish to exclude from logging via `set :quiet_logger_prefixes, %w(images css fonts)`') if quiet_logger_prefixes.empty?
|
39
|
+
const_set('QUIET_LOGGER_REGEX', %r(\A/{0,2}(?:#{quiet_logger_prefixes})))
|
40
|
+
::Rack::CommonLogger.prepend(
|
41
|
+
::Module.new do
|
42
|
+
def log(env, *)
|
43
|
+
super unless env['PATH_INFO'] =~ QUIET_LOGGER_REGEX
|
44
|
+
end
|
45
|
+
end
|
46
|
+
)
|
47
|
+
end
|
48
|
+
|
49
|
+
end
|
50
|
+
end
|
data/lib/sinatra/reloader.rb
CHANGED
@@ -269,7 +269,7 @@ module Sinatra
|
|
269
269
|
#
|
270
270
|
# Note: We are using #compile! so we don't interfere with extensions
|
271
271
|
# changing #route.
|
272
|
-
def compile!(verb, path, block, options
|
272
|
+
def compile!(verb, path, block, **options)
|
273
273
|
source_location = block.respond_to?(:source_location) ?
|
274
274
|
block.source_location.first : caller_files[1]
|
275
275
|
signature = super
|
@@ -302,7 +302,7 @@ module Sinatra
|
|
302
302
|
# Does everything Sinatra::Base#add_filter does, but it also tells
|
303
303
|
# the +Watcher::List+ for the Sinatra application to watch the defined
|
304
304
|
# filter.
|
305
|
-
def add_filter(type, path = nil, options
|
305
|
+
def add_filter(type, path = nil, **options, &block)
|
306
306
|
source_location = block.respond_to?(:source_location) ?
|
307
307
|
block.source_location.first : caller_files[1]
|
308
308
|
result = super
|
data/lib/sinatra/respond_with.rb
CHANGED
@@ -221,7 +221,7 @@ module Sinatra
|
|
221
221
|
|
222
222
|
private
|
223
223
|
|
224
|
-
def compile!(verb, path, block, options
|
224
|
+
def compile!(verb, path, block, **options)
|
225
225
|
options[:provides] ||= respond_to if respond_to
|
226
226
|
super
|
227
227
|
end
|
@@ -240,7 +240,7 @@ module Sinatra
|
|
240
240
|
:css => [:less, :sass, :scss],
|
241
241
|
:xml => [:builder, :nokogiri],
|
242
242
|
:js => [:coffee],
|
243
|
-
:html => [:erb, :erubi, :erubis, :haml, :
|
243
|
+
:html => [:erb, :erubi, :erubis, :haml, :hamlit, :slim, :liquid, :radius,
|
244
244
|
:mab, :markdown, :textile, :rdoc],
|
245
245
|
:all => (Sinatra::Templates.instance_methods.map(&:to_sym) +
|
246
246
|
[:mab] - [:find_template, :markaby]),
|
data/sinatra-contrib.gemspec
CHANGED
@@ -34,11 +34,10 @@ RubyGems 2.0 or newer is required to protect against public gem pushes. You can
|
|
34
34
|
EOF
|
35
35
|
end
|
36
36
|
|
37
|
-
s.required_ruby_version = '>= 2.
|
37
|
+
s.required_ruby_version = '>= 2.3.0'
|
38
38
|
|
39
39
|
s.add_dependency "sinatra", version
|
40
40
|
s.add_dependency "mustermann", "~> 1.0"
|
41
|
-
s.add_dependency "backports", ">= 2.8.2"
|
42
41
|
s.add_dependency "tilt", "~> 2.0"
|
43
42
|
s.add_dependency "rack-protection", version
|
44
43
|
s.add_dependency "multi_json"
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: sinatra-contrib
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
4
|
+
version: 2.2.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- https://github.com/sinatra/sinatra/graphs/contributors
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2022-07-15 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: sinatra
|
@@ -16,14 +16,14 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - '='
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: 2.
|
19
|
+
version: 2.2.1
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - '='
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: 2.
|
26
|
+
version: 2.2.1
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: mustermann
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
@@ -38,20 +38,6 @@ dependencies:
|
|
38
38
|
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: '1.0'
|
41
|
-
- !ruby/object:Gem::Dependency
|
42
|
-
name: backports
|
43
|
-
requirement: !ruby/object:Gem::Requirement
|
44
|
-
requirements:
|
45
|
-
- - ">="
|
46
|
-
- !ruby/object:Gem::Version
|
47
|
-
version: 2.8.2
|
48
|
-
type: :runtime
|
49
|
-
prerelease: false
|
50
|
-
version_requirements: !ruby/object:Gem::Requirement
|
51
|
-
requirements:
|
52
|
-
- - ">="
|
53
|
-
- !ruby/object:Gem::Version
|
54
|
-
version: 2.8.2
|
55
41
|
- !ruby/object:Gem::Dependency
|
56
42
|
name: tilt
|
57
43
|
requirement: !ruby/object:Gem::Requirement
|
@@ -72,14 +58,14 @@ dependencies:
|
|
72
58
|
requirements:
|
73
59
|
- - '='
|
74
60
|
- !ruby/object:Gem::Version
|
75
|
-
version: 2.
|
61
|
+
version: 2.2.1
|
76
62
|
type: :runtime
|
77
63
|
prerelease: false
|
78
64
|
version_requirements: !ruby/object:Gem::Requirement
|
79
65
|
requirements:
|
80
66
|
- - '='
|
81
67
|
- !ruby/object:Gem::Version
|
82
|
-
version: 2.
|
68
|
+
version: 2.2.1
|
83
69
|
- !ruby/object:Gem::Dependency
|
84
70
|
name: multi_json
|
85
71
|
requirement: !ruby/object:Gem::Requirement
|
@@ -400,6 +386,7 @@ files:
|
|
400
386
|
- lib/sinatra/link_header.rb
|
401
387
|
- lib/sinatra/multi_route.rb
|
402
388
|
- lib/sinatra/namespace.rb
|
389
|
+
- lib/sinatra/quiet_logger.rb
|
403
390
|
- lib/sinatra/reloader.rb
|
404
391
|
- lib/sinatra/required_params.rb
|
405
392
|
- lib/sinatra/respond_with.rb
|
@@ -415,7 +402,7 @@ metadata:
|
|
415
402
|
source_code_uri: https://github.com/sinatra/sinatra/tree/master/sinatra-contrib
|
416
403
|
homepage_uri: http://sinatrarb.com/contrib/
|
417
404
|
documentation_uri: https://www.rubydoc.info/gems/sinatra-contrib
|
418
|
-
post_install_message:
|
405
|
+
post_install_message:
|
419
406
|
rdoc_options: []
|
420
407
|
require_paths:
|
421
408
|
- lib
|
@@ -423,16 +410,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
423
410
|
requirements:
|
424
411
|
- - ">="
|
425
412
|
- !ruby/object:Gem::Version
|
426
|
-
version: 2.
|
413
|
+
version: 2.3.0
|
427
414
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
428
415
|
requirements:
|
429
416
|
- - ">="
|
430
417
|
- !ruby/object:Gem::Version
|
431
418
|
version: '0'
|
432
419
|
requirements: []
|
433
|
-
|
434
|
-
|
435
|
-
signing_key:
|
420
|
+
rubygems_version: 3.0.3.1
|
421
|
+
signing_key:
|
436
422
|
specification_version: 4
|
437
423
|
summary: Collection of useful Sinatra extensions
|
438
424
|
test_files: []
|