rack-timeout 0.5.1 → 0.5.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (6) hide show
  1. checksums.yaml +5 -5
  2. data/CHANGELOG.md +112 -0
  3. data/README.md +117 -0
  4. data/UPGRADING.md +19 -0
  5. data/lib/rack-timeout.rb +1 -1
  6. metadata +12 -5
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA256:
3
- metadata.gz: 642f765e106069393a85355bb1b205479b125e9e4fb639c4b8b7f8309b5563ea
4
- data.tar.gz: 0d8dc45b11b4561760d7163526b9926f8c566ed8c29ff83f7665cc890360da9e
2
+ SHA1:
3
+ metadata.gz: a13210b3a4119f8fb5d6c4bc6f6c48ab24fbddcd
4
+ data.tar.gz: 37718bb72a7a86a3c5e525e37546bf84891100df
5
5
  SHA512:
6
- metadata.gz: 33ee501f48e9ab8a7399fca2ec9c2ec1c3c26b10e6352b4371e4ca4b01706186457146556dbdcf38e82483e4348eb8815bd77dd15ea7e350e473e56c6f784249
7
- data.tar.gz: eaf9a7f04e9b2f1b3404d4fcf2a8f88d368cc0ed4e24b1c9df3cedd032ca41e63879c3064c02652e718fd0a6693756a2b303e832a4f1ffa03b595bfcc168c555
6
+ metadata.gz: 5ed18160165e8511b56d7627dcc82f129162c4dbaeacaaea3b25cef1b66ec72b601a33bf9413b39bd24c434972278f3dd54b508d7452a3fa934607c034c33a1c
7
+ data.tar.gz: 4c9bf93aefac52b1523a6619b8ff0b9b2e0ee8dd7a7cc818df3ebc6c8ca80354e11e5119cb75ee172922abdef3d7784afe9090ec52521fbf333cd86020479f38
@@ -0,0 +1,112 @@
1
+ 0.5.2
2
+ =====
3
+ - Rails 6 support (#147)
4
+
5
+ 0.5.1
6
+ =====
7
+ - Fixes setting ENV vars to false or 0 would not disable a timeout
8
+ (#133)
9
+
10
+ 0.5.0.1
11
+ =======
12
+ - Fix 0600 permissions in gem pushed to rubygems
13
+
14
+ 0.5.0
15
+ =====
16
+
17
+ Breaking Changes
18
+
19
+ - Remove Rollbar module (#124)
20
+ - Remove legacy class setters (#125)
21
+
22
+ Other
23
+
24
+ - Add support to configure via environment variables (#105)
25
+ - Adds support for ActionDispatch::RequestId generated request ids (#115)
26
+ - Changes uuid format to proper uuid (#115)
27
+
28
+ 0.4.2
29
+ =====
30
+ - Ruby 2.0 compatible
31
+
32
+ 0.4.1
33
+ =====
34
+ - Rails 5 support
35
+ - Remove deprecation warning on timeout setter for Rails apps
36
+
37
+ 0.4.0
38
+ =====
39
+ - Using monotonic time instead of Time.now where available (/ht concurrent-ruby)
40
+ - Settings are now passable to the middleware initializer instead of class-level
41
+ - Rollbar module may take a custom fingerprint block
42
+ - Rollbar module considered final
43
+ - Fixed an issue where some heartbeats would live on forever (#103, /ht @0x0badc0de)
44
+
45
+ 0.3.2
46
+ =====
47
+ - Fixes calling timeout with a value of 0 (issue #90)
48
+
49
+ 0.3.1
50
+ =====
51
+ - Rollbar module improvements
52
+
53
+ 0.3.0
54
+ =====
55
+ - use a single scheduler thread to manage timeouts, instead of one timeout thread per request
56
+ - instead of inserting middleware at position 0 for rails, insert before Rack::Runtime (which is right after Rack::Lock and the static file stuff)
57
+ - reshuffle error types: RequestExpiryError is again a RuntimeError, and timeouts raise a RequestTimeoutException, an Exception, and not descending from Rack::Timeout::Error (see README for more)
58
+ - don't insert middleware for rails in test environment
59
+ - add convenience module Rack::Timeout::Logger (see README for more)
60
+ - StageChangeLoggingObserver renamed to StateChangeLoggingObserver, works slightly differently too
61
+ - file layout reorganization (see 6e82c276 for details)
62
+ - CHANGELOG file is now in the gem (@dbackeus)
63
+ - add optional and experimental support for grouping errors by url under rollbar. see "rack/timeout/rollbar" for usage
64
+
65
+ 0.2.4
66
+ =====
67
+ - Previous fix was borked.
68
+
69
+ 0.2.3
70
+ =====
71
+ - Ignore Rack::NullLogger when picking a logger
72
+
73
+ 0.2.1
74
+ =====
75
+ - Fix raised error messages
76
+
77
+ 0.2.0
78
+ =====
79
+ - Added CHANGELOG
80
+ - Rack::Timeout::Error now inherits from Exception instead of StandardError, with the hope users won't rescue from it accidentally
81
+
82
+ 0.1.2
83
+ =====
84
+ - improve RequestTimeoutError error string so @watsonian is happy
85
+
86
+ 0.1.1
87
+ =====
88
+ - README updates
89
+ - fix that setting properties to false resulted in an error
90
+
91
+ 0.1.0
92
+ =====
93
+ - Rewrote README
94
+
95
+ 0.1.0beta4
96
+ ==========
97
+ - Renamed `timeout` setting to `service_timeout`; `timeout=` still works for backwards compatibility
98
+ – `MAX_REQUEST_AGE` is gone, the `wait_timeout` setting more or less replaces it
99
+ - Renamed `overtime` setting to `wait_overtime`
100
+ - overtime setting should actually work (It had never made it to beta3)
101
+ - In the request info struct, renamed `age` to `wait`, `duration` to `service`
102
+ - Rack::Timeout::StageChangeLogger is gone, replaced by Rack::Timeout::StageChangeLoggingObserver, which is an observer class that composites with a logger, instead of inheriting from Logger. Anything logging related will likely be incompatible with previous beta release.
103
+ - Log level can no longer be set with env vars, has to be set in the logger being used. (Which can now be custom / user-provided.)
104
+
105
+ 0.1.0beta1,2,3
106
+ ==============
107
+ - Dropped ruby 1.8.x support
108
+ - Dropped rails 2 support
109
+ - Added rails 4 support
110
+ - Added much logging
111
+ – Added support for dropping requests that waited too long in the queue without ever handling them
112
+ - Other things I can't remember, see git logs :P
@@ -0,0 +1,117 @@
1
+ Rack::Timeout
2
+ =============
3
+
4
+ Abort requests that are taking too long; an exception is raised.
5
+
6
+ A timeout of 15s is the default. It's recommended to set the timeout as
7
+ low as realistically viable for your application. You can modify this by
8
+ setting the `RACK_TIMEOUT_SERVICE_TIMEOUT` environment variable.
9
+
10
+ There's a handful of other settings, read on for details.
11
+
12
+ Rack::Timeout is not a solution to the problem of long-running requests,
13
+ it's a debug and remediation tool. App developers should track
14
+ rack-timeout's data and address recurring instances of particular
15
+ timeouts, for example by refactoring code so it runs faster or
16
+ offsetting lengthy work to happen asynchronously.
17
+
18
+ Upgrading
19
+ ---------
20
+
21
+ For fixing issues when upgrading, please see [UPGRADING](UPGRADING.md).
22
+
23
+ Basic Usage
24
+ -----------
25
+
26
+ The following covers currently supported versions of Rails, Rack, Ruby,
27
+ and Bundler. See the Compatibility section at the end for legacy
28
+ versions.
29
+
30
+ ### Rails apps
31
+
32
+ ```ruby
33
+ # Gemfile
34
+ gem "rack-timeout"
35
+ ```
36
+
37
+ This will load rack-timeout and set it up as a Rails middleware using
38
+ the default timeout of 15s. The middleware is not inserted for the test
39
+ environment. You can modify the timeout by setting a
40
+ `RACK_TIMEOUT_SERVICE_TIMEOUT` environment variable.
41
+
42
+ ### Rails apps, manually
43
+
44
+ You'll need to do this if you removed `Rack::Runtime` from the
45
+ middleware stack, or if you want to determine yourself where in the
46
+ stack `Rack::Timeout` gets inserted.
47
+
48
+ ```ruby
49
+ # Gemfile
50
+ gem "rack-timeout", require:"rack/timeout/base"
51
+ ```
52
+
53
+ ```ruby
54
+ # config/initializers/rack_timeout.rb
55
+
56
+ # insert middleware wherever you want in the stack, optionally pass
57
+ # initialization arguments, or use environment variables
58
+ Rails.application.config.middleware.insert_before Rack::Runtime, Rack::Timeout, service_timeout: 5
59
+ ```
60
+
61
+ ### Sinatra and other Rack apps
62
+
63
+ ```ruby
64
+ # config.ru
65
+ require "rack-timeout"
66
+
67
+ # Call as early as possible so rack-timeout runs before all other middleware.
68
+ # Setting service_timeout or `RACK_TIMEOUT_SERVICE_TIMEOUT` environment
69
+ # variable is recommended. If omitted, defaults to 15 seconds.
70
+ use Rack::Timeout, service_timeout: 5
71
+ ```
72
+
73
+ Configuring
74
+ -----------
75
+
76
+ Rack::Timeout takes the following settings, shown here with their
77
+ default values and associated environment variables.
78
+
79
+ ```
80
+ service_timeout: 15 # RACK_TIMEOUT_SERVICE_TIMEOUT
81
+ wait_timeout: 30 # RACK_TIMEOUT_WAIT_TIMEOUT
82
+ wait_overtime: 60 # RACK_TIMEOUT_WAIT_OVERTIME
83
+ service_past_wait: false # RACK_TIMEOUT_SERVICE_PAST_WAIT
84
+ ```
85
+
86
+ These settings can be overriden during middleware initialization or
87
+ environment variables `RACK_TIMEOUT_*` mentioned above. Middleware
88
+ parameters take precedence:
89
+
90
+ ```ruby
91
+ use Rack::Timeout, service_timeout: 5, wait_timeout: false
92
+ ```
93
+
94
+ For more on these settings, please see [doc/settings](doc/settings.md).
95
+
96
+ Further Documentation
97
+ ---------------------
98
+
99
+ Please see the [doc](doc) folder for further documentation on:
100
+
101
+ * [Risks and shortcomings of using Rack::Timeout](doc/risks.md)
102
+ * [Understanding the request lifecycle](doc/request-lifecycle.md)
103
+ * [Exceptions raised by Rack::Timeout](doc/exceptions.md)
104
+ * [Rollbar fingerprinting](doc/rollbar.md)
105
+ * [Observers](doc/observers.md)
106
+ * [Logging](doc/logging.md)
107
+
108
+ Compatibility
109
+ -------------
110
+
111
+ This version of Rack::Timeout is compatible with Ruby 2.1 and up, and,
112
+ for Rails apps, Rails 3.x and up.
113
+
114
+
115
+ ---
116
+ Copyright © 2010-2016 Caio Chassot, released under the MIT license
117
+ <http://github.com/heroku/rack-timeout>
@@ -0,0 +1,19 @@
1
+ Upgrading
2
+ =========
3
+
4
+ From 0.4 or older
5
+ -----------------
6
+
7
+ - Removal of the class setters, such as `Rack::Timeout.timeout = 5`, may
8
+ lead to an error when upgrading. To fix this, remove these setters and
9
+ instead use either the [environment variables][config-env],
10
+ `RACK_TIMEOUT_*`, or [insert the middleware manually][config-insert]
11
+ and configure the middleware as desired when inserting.
12
+
13
+ [config-env]: README.md#configuring
14
+ [config-insert]: README.md#rails-apps-manually
15
+
16
+ - The Rollbar support was removed; a deprecation warning will be emitted
17
+ if you are using this module. The recommendation is to use Rollbar's
18
+ custom fingerprinting. A recommendation is provided in
19
+ [doc/rollbar.md](doc/rollbar.md).
@@ -1,2 +1,2 @@
1
1
  require_relative "rack/timeout/base"
2
- require_relative "rack/timeout/rails" if defined?(Rails) && [3,4,5].include?(Rails::VERSION::MAJOR)
2
+ require_relative "rack/timeout/rails" if defined?(Rails) && [3,4,5,6].include?(Rails::VERSION::MAJOR)
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rack-timeout
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.1
4
+ version: 0.5.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Caio Chassot
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-05-31 00:00:00.000000000 Z
11
+ date: 2019-10-25 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake
@@ -59,9 +59,12 @@ executables: []
59
59
  extensions: []
60
60
  extra_rdoc_files: []
61
61
  files:
62
+ - CHANGELOG.md
62
63
  - Gemfile
63
64
  - MIT-LICENSE
65
+ - README.md
64
66
  - Rakefile
67
+ - UPGRADING.md
65
68
  - doc/exceptions.md
66
69
  - doc/logging.md
67
70
  - doc/observers.md
@@ -83,10 +86,14 @@ files:
83
86
  - test/basic_test.rb
84
87
  - test/env_settings_test.rb
85
88
  - test/test_helper.rb
86
- homepage: http://github.com/heroku/rack-timeout
89
+ homepage: https://github.com/sharpstone/rack-timeout
87
90
  licenses:
88
91
  - MIT
89
- metadata: {}
92
+ metadata:
93
+ bug_tracker_uri: https://github.com/sharpstone/rack-timeout/issues
94
+ changelog_uri: https://github.com/sharpstone/rack-timeout/blob/v0.5.2/CHANGELOG.md
95
+ documentation_uri: https://rubydoc.info/gems/rack-timeout/0.5.2/
96
+ source_code_uri: https://github.com/sharpstone/rack-timeout
90
97
  post_install_message:
91
98
  rdoc_options: []
92
99
  require_paths:
@@ -103,7 +110,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
103
110
  version: '0'
104
111
  requirements: []
105
112
  rubyforge_project:
106
- rubygems_version: 2.7.6
113
+ rubygems_version: 2.5.2.3
107
114
  signing_key:
108
115
  specification_version: 4
109
116
  summary: Abort requests that are taking too long