wayfarer 0.4.5 → 0.4.6

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: e7d0560732b7b89dd2bb7d86ed4d5c6a07f240c246c864bb067060cbd5fe7156
4
- data.tar.gz: cc58bdc83b09293caa5eea587f437d14333a20c399be586fc4d2216cc9c0ae39
3
+ metadata.gz: 6b5aceb6e67a298f9ddc3bffecf24446b2e95850e2bfe31f0d245fbb8a4e17f0
4
+ data.tar.gz: db7323a6cb7942319478753d3060b54cdc7551c3ac6fb0c32bf49015d6f29c68
5
5
  SHA512:
6
- metadata.gz: 5427038da9468be757d11709c5a08879063af448be881d881a288aedf8b6930a49755d4e89e1701dc68cfb1f2be6de613ae04b466669901a281a6f4f268c3671
7
- data.tar.gz: 23a208e0eb8c72d12273660010fa19d9b8fb7a304508a5b051c348b23720d2a1d1aecc7836d93aac91466065048a36b1bc126193165f47b59c77979c55a00f68
6
+ metadata.gz: 016a9d535cf7a3c02afc1bb2503d701328cb6ac55e8c8bdfdeda782c6c8d2eab8528ef30c1b05e4241b8f439f98617865b7d00ff7fd6b49683d288d431e37936
7
+ data.tar.gz: 748d79ed7028e114dc2aff3cb1d31b4163bc7ff289ea9f20f78bec4c5941622ecf40e58330e7e5c678884f37cbb800b8bd2acb8aca106916e8daccc510567e85
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- wayfarer (0.4.5)
4
+ wayfarer (0.4.6)
5
5
  activejob (>= 6.0)
6
6
  addressable (~> 2.8)
7
7
  capybara (~> 3.0)
@@ -5,7 +5,7 @@
5
5
  * Wayfarer never swallows exceptions.
6
6
  * Jobs with unhandled exceptions are not retried.
7
7
 
8
- ## Retrying and discarding
8
+ ## Retrying or discarding failing jobs
9
9
 
10
10
  Wayfarer relies on [Active Job's two error handling facilities](https://guides.rubyonrails.org/active_job_basics.html#exceptions).
11
11
 
@@ -16,6 +16,8 @@ Wayfarer relies on [Active Job's two error handling facilities](https://guides.r
16
16
  retry_on MyError, attempts: 3 do |job, error|
17
17
  # This block runs once all 3 attempts have failed
18
18
  # (1 initial attempt + 2 retries)
19
+
20
+ raise error
19
21
  end
20
22
  end
21
23
  ```
@@ -26,6 +28,26 @@ Wayfarer relies on [Active Job's two error handling facilities](https://guides.r
26
28
  class DummyJob < Wayfarer::Base
27
29
  discard_on MyError do |job, error|
28
30
  # This block runs once and buries the job
31
+
32
+ raise error
29
33
  end
30
34
  end
31
35
  ```
36
+
37
+ !!! attention "Always re-raise errors"
38
+
39
+ You should always re-raise errors from `retry_on` and `discard_on` blocks,
40
+ otherwise jobs will not get retried!
41
+
42
+ ## Renewing agents on certain errors
43
+
44
+ ```ruby
45
+ Wayfarer.config.network.renew_on = [MyError]
46
+ ```
47
+
48
+ For example, if you use the Capybara
49
+ [Cuprite](https://github.com/rubycdp/cuprite) driver:
50
+
51
+ ```ruby
52
+ Wayfarer.config.network.renew_on = [Ferrum::DeadBrowserError]
53
+ ```
@@ -13,6 +13,7 @@ hide:
13
13
  | `network.pool_size` | `WAYFARER_NETWORK_POOL_SIZE` | How many user agents to spawn. | 1 | Integers |
14
14
  | `network.pool_timeout` | `WAYFARER_NETWORK_POOL_TIMEOUT` | How long jobs may use an agent in seconds. | 10 | Integers |
15
15
  | `network.http_headers` | `WAYFARER_NETWORK_HTTP_HEADERS` | HTTP headers to append to requests. | `{}` | Hashes |
16
+ | `network.renew_on` | | Exception classes to renew agents on. | `[]` | Classes |
16
17
 
17
18
  ## `Wayfarer.config.ferrum`
18
19
 
@@ -21,6 +21,9 @@ module Wayfarer
21
21
  env_key: "WAYFARER_NETWORK_HTTP_HEADERS",
22
22
  type: Hash,
23
23
  default: {}
24
+ },
25
+ renew_on: {
26
+ default: []
24
27
  })
25
28
  end
26
29
  end
@@ -25,7 +25,7 @@ module Wayfarer
25
25
 
26
26
  def supervise
27
27
  yield
28
- rescue *strategy.renew_on => e
28
+ rescue *strategy.renew_on, *Wayfarer.config.network.renew_on => e
29
29
  renew
30
30
  ensure
31
31
  # If renewing raises, re-raise the originally caught exception
data/lib/wayfarer.rb CHANGED
@@ -38,7 +38,7 @@ module Wayfarer
38
38
  module VERSION
39
39
  MAJOR = 0
40
40
  MINOR = 4
41
- TINY = 5
41
+ TINY = 6
42
42
  STRING = [MAJOR, MINOR, TINY].join(".")
43
43
  end
44
44
 
@@ -45,6 +45,23 @@ describe Wayfarer::Networking::Context do
45
45
  end
46
46
  end
47
47
 
48
+ context "with configured renewing exception raised" do
49
+ let(:other_error) { Class.new(StandardError) }
50
+
51
+ before do
52
+ Wayfarer.config.network.renew_on = [other_error]
53
+ allow(strategy).to receive(:fetch).and_raise(other_error)
54
+ end
55
+
56
+ it "renews and reraises" do
57
+ expect(context).to receive(:renew)
58
+
59
+ expect {
60
+ context.fetch(url)
61
+ }.to raise_error(other_error)
62
+ end
63
+ end
64
+
48
65
  context "with non-renewing exception raised" do
49
66
  before do
50
67
  allow(strategy).to receive(:fetch).and_raise(StandardError)
data/wayfarer.gemspec CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  Gem::Specification.new do |s|
4
4
  s.name = "wayfarer"
5
- s.version = "0.4.5"
5
+ s.version = "0.4.6"
6
6
  s.license = "MIT"
7
7
 
8
8
  s.homepage = "http://github.com/bauerd/wayfarer"
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: wayfarer
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.5
4
+ version: 0.4.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Dominic Bauer