wayfarer 0.4.5 → 0.4.6

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 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