we-call 0.9.0 → 0.9.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 +5 -5
- data/.circleci/config.yml +42 -0
- data/.coveralls.yml +1 -1
- data/.github/workflows/build.yml +23 -0
- data/CHANGELOG.md +7 -0
- data/README.md +34 -4
- data/lib/we/call/configuration.rb +4 -1
- data/lib/we/call/connection.rb +19 -0
- data/lib/we/call/version.rb +1 -1
- data/script/cibuild +7 -0
- data/script/publish_gem +18 -0
- data/we-call.gemspec +1 -1
- metadata +10 -7
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 83cdb2541d4d694624f06d63e03dce612db88ce09e0ff7532c4d701424aedb46
|
4
|
+
data.tar.gz: a3862e1f9f6f4f1685ab2c7c8077e4a166ab3ebfa8a017fb32aa701d7dc68705
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1e8f5628d633564aaf0183a89ebebb9e9c4ee82d298d2deee8513b26dd5f8a52326ce57278c3f9782986def685212995f034a3e18d65321a34081689d248ca2a
|
7
|
+
data.tar.gz: 3792fa6710c0e4fcca018ad96464772d5776864bea0fc19e2c493bd871a9008eb09f6a675892008df4b9fe8454cdda66eca8a0e09d38dee5018428c8fa985b49
|
@@ -0,0 +1,42 @@
|
|
1
|
+
version: 2.1
|
2
|
+
|
3
|
+
x-shared: &x-shared
|
4
|
+
docker:
|
5
|
+
- image: circleci/ruby:2.6.3-stretch-node
|
6
|
+
|
7
|
+
jobs:
|
8
|
+
build:
|
9
|
+
<<: *x-shared
|
10
|
+
steps:
|
11
|
+
- checkout
|
12
|
+
- run:
|
13
|
+
name: Build
|
14
|
+
command: ./script/cibuild
|
15
|
+
- persist_to_workspace:
|
16
|
+
root: .
|
17
|
+
paths: .
|
18
|
+
publish-gem:
|
19
|
+
<<: *x-shared
|
20
|
+
steps:
|
21
|
+
- attach_workspace:
|
22
|
+
at: ~/project # circleci default working directory
|
23
|
+
- run:
|
24
|
+
name: Publish Gem
|
25
|
+
command: ./script/publish_gem
|
26
|
+
workflows:
|
27
|
+
version: 2
|
28
|
+
build:
|
29
|
+
jobs:
|
30
|
+
- build:
|
31
|
+
filters:
|
32
|
+
tags:
|
33
|
+
only: /v[0-9]+(\.[0-9]+)+/
|
34
|
+
- publish-gem:
|
35
|
+
requires:
|
36
|
+
- build
|
37
|
+
filters:
|
38
|
+
branches:
|
39
|
+
ignore:
|
40
|
+
- /.*/
|
41
|
+
tags:
|
42
|
+
only: /v[0-9]+(\.[0-9]+)+/
|
data/.coveralls.yml
CHANGED
@@ -1 +1 @@
|
|
1
|
-
service_name:
|
1
|
+
service_name: circleci
|
@@ -0,0 +1,23 @@
|
|
1
|
+
name: Ruby
|
2
|
+
|
3
|
+
on:
|
4
|
+
push:
|
5
|
+
branches: [ $default-branch ]
|
6
|
+
pull_request:
|
7
|
+
branches: [ $default-branch ]
|
8
|
+
|
9
|
+
jobs:
|
10
|
+
test:
|
11
|
+
runs-on: ubuntu-latest
|
12
|
+
steps:
|
13
|
+
- uses: actions/checkout@v2
|
14
|
+
- name: Set up Ruby
|
15
|
+
uses: ruby/setup-ruby@v1
|
16
|
+
with:
|
17
|
+
ruby-version: 2.6
|
18
|
+
- name: Install dependencies
|
19
|
+
run: bundle install
|
20
|
+
- name: Generate gemfiles
|
21
|
+
run: bundle exec appraisal install
|
22
|
+
- name: Run tests
|
23
|
+
run: bundle exec appraisal rspec
|
data/CHANGELOG.md
CHANGED
@@ -5,6 +5,13 @@ All notable changes to this project will be documented in this file.
|
|
5
5
|
The format is based on [Keep a Changelog](http://keepachangelog.com/)
|
6
6
|
and this project adheres to [Semantic Versioning](http://semver.org/).
|
7
7
|
|
8
|
+
## [v0.9.1] - 2020-11-20
|
9
|
+
### Added
|
10
|
+
- Automatically retry on network errors([#31])
|
11
|
+
|
12
|
+
[activesupport]: https://github.com/rails/rails/tree/master/activesupport
|
13
|
+
[#31]: https://github.com/wework/we-call-gem/pull/31
|
14
|
+
|
8
15
|
## [v0.9.0] - 2018-09-18
|
9
16
|
### Added
|
10
17
|
- Automatically reports deprecations to ActiveSupport if [activesupport] gem exists ([#21])
|
data/README.md
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
# We::Call
|
2
2
|
|
3
|
-
[![Build Status][
|
3
|
+
[![Build Status][ci-image]][ci-url]
|
4
4
|
[![Coverage Status][coveralls-image]][coveralls-url]
|
5
5
|
[![MIT License][license-image]][license-url]
|
6
6
|
|
@@ -102,6 +102,36 @@ As well as `timeout: num_seconds` which can set the entire open/read (essentiall
|
|
102
102
|
|
103
103
|
### Client
|
104
104
|
|
105
|
+
**Retry**
|
106
|
+
|
107
|
+
Automatically enabled, the retry middleware will retry the request in case of network errors. By default, the middleware will retry up to 3 times, waiting 1 second between the retries.
|
108
|
+
|
109
|
+
Disable the middleware:
|
110
|
+
|
111
|
+
```ruby
|
112
|
+
We::Call.configure do |config|
|
113
|
+
config.retry = false
|
114
|
+
end
|
115
|
+
```
|
116
|
+
|
117
|
+
Adjust the middleware:
|
118
|
+
|
119
|
+
```ruby
|
120
|
+
We::Call.configure do |config|
|
121
|
+
config.retry_options = { interval: 0.5 }
|
122
|
+
end
|
123
|
+
```
|
124
|
+
|
125
|
+
The gem smartly merges the options passed, so you can specify your own list of exceptions without being afraid to override the default ones:
|
126
|
+
|
127
|
+
```ruby
|
128
|
+
We::Call.configure do |config|
|
129
|
+
config.retry_options = { exceptions: [Faraday::ResourceNotFound] }
|
130
|
+
end
|
131
|
+
```
|
132
|
+
|
133
|
+
Check [Faraday's Retry Docs](https://github.com/lostisland/faraday/blob/master/docs/middleware/request/retry.md) for a list of available options.
|
134
|
+
|
105
135
|
**DetectDeprecations**
|
106
136
|
|
107
137
|
Automatically enabled, the faraday-sunset middleware will watch for the [Sunset header](https://tools.ietf.org/html/draft-wilde-sunset-header-03) and send warning to `ActiveSupport::Deprecation` if enabled, or to whatever is in `ENV['rake.logger']`.
|
@@ -155,10 +185,10 @@ Bug reports and pull requests are welcome on GitHub at [wework/we-call](https://
|
|
155
185
|
|
156
186
|
|
157
187
|
[coveralls-image]:https://coveralls.io/repos/github/wework/we-call-gem/badge.svg?branch=master
|
158
|
-
[coveralls-url]:https://coveralls.io/github/wework/we-call-gem?branch=
|
188
|
+
[coveralls-url]:https://coveralls.io/github/wework/we-call-gem?branch=main
|
159
189
|
|
160
|
-
[
|
161
|
-
[
|
190
|
+
[ci-url]:https://app.circleci.com/pipelines/github/wework/we-call-gem
|
191
|
+
[ci-image]:https://circleci.com/gh/wework/we-call-gem.svg?style=shield
|
162
192
|
|
163
193
|
[license-url]: LICENSE
|
164
194
|
[license-image]: http://img.shields.io/badge/license-MIT-000000.svg?style=flat-square
|
@@ -4,11 +4,14 @@ require 'faraday_middleware'
|
|
4
4
|
module We
|
5
5
|
module Call
|
6
6
|
class Configuration
|
7
|
-
attr_accessor :app_env, :app_env_header, :app_name, :app_name_header, :detect_deprecations
|
7
|
+
attr_accessor :app_env, :app_env_header, :app_name, :app_name_header, :detect_deprecations,
|
8
|
+
:retry, :retry_options
|
8
9
|
|
9
10
|
def initialize
|
10
11
|
@app_env_header = 'X-App-Env'
|
11
12
|
@app_name_header = 'X-App-Name'
|
13
|
+
@retry = true
|
14
|
+
@retry_options = {}
|
12
15
|
end
|
13
16
|
end
|
14
17
|
end
|
data/lib/we/call/connection.rb
CHANGED
@@ -14,6 +14,12 @@ module We
|
|
14
14
|
DEFAULT_ADAPTER_CLASS = Faraday::Adapter::Typhoeus
|
15
15
|
DEFAULT_ADAPTER = :typhoeus
|
16
16
|
|
17
|
+
DEFAULT_RETRY_OPTIONS = {
|
18
|
+
max: 3,
|
19
|
+
interval: 1,
|
20
|
+
exceptions: [Faraday::ConnectionFailed, Faraday::TimeoutError]
|
21
|
+
}
|
22
|
+
|
17
23
|
class MissingApp < ArgumentError; end
|
18
24
|
class MissingEnv < ArgumentError; end
|
19
25
|
class MissingTimeout < ArgumentError; end
|
@@ -72,6 +78,9 @@ module We
|
|
72
78
|
if config.detect_deprecations
|
73
79
|
faraday.response :sunset, setup_sunset_middleware(faraday)
|
74
80
|
end
|
81
|
+
if config.retry
|
82
|
+
faraday.request :retry, fetch_retry_options
|
83
|
+
end
|
75
84
|
|
76
85
|
yield faraday if block_given?
|
77
86
|
|
@@ -118,6 +127,16 @@ module We
|
|
118
127
|
options
|
119
128
|
end
|
120
129
|
|
130
|
+
def fetch_retry_options
|
131
|
+
DEFAULT_RETRY_OPTIONS.merge(config.retry_options) do |key, default_val, new_val|
|
132
|
+
if key == :exceptions
|
133
|
+
default_val + Array(new_val)
|
134
|
+
else
|
135
|
+
new_val
|
136
|
+
end
|
137
|
+
end
|
138
|
+
end
|
139
|
+
|
121
140
|
# @return [String] Environment (usually 'development', 'staging', 'production', etc.)
|
122
141
|
def guess_env
|
123
142
|
return config.app_env if config.app_env
|
data/lib/we/call/version.rb
CHANGED
data/script/cibuild
ADDED
data/script/publish_gem
ADDED
@@ -0,0 +1,18 @@
|
|
1
|
+
#!/bin/bash
|
2
|
+
set -eox pipefail
|
3
|
+
|
4
|
+
mkdir -p ~/.gem
|
5
|
+
echo :rubygems_api_key: $RUBYGEMS_APIKEY > ~/.gem/credentials
|
6
|
+
chmod 0600 ~/.gem/credentials
|
7
|
+
|
8
|
+
VERSION_FILE="lib/we/call/version.rb"
|
9
|
+
if [[ -n $CIRCLE_TAG ]]; then
|
10
|
+
# Determine the version from the tag; remove the leading v "v3.3.0" -> "3.3.0"
|
11
|
+
VERSION=$(echo "${CIRCLE_TAG}" | sed 's/^v//')
|
12
|
+
# Replace the version for the gemspec with the tag version
|
13
|
+
sed -i.bak -E "s/VERSION = .*/VERSION = '$VERSION'/" $VERSION_FILE
|
14
|
+
fi
|
15
|
+
|
16
|
+
gem build *.gemspec
|
17
|
+
|
18
|
+
gem push *.gem
|
data/we-call.gemspec
CHANGED
@@ -26,7 +26,7 @@ Gem::Specification.new do |spec|
|
|
26
26
|
spec.add_dependency "faraday-sunset", '~> 0.2'
|
27
27
|
|
28
28
|
spec.add_development_dependency "appraisal", "~> 2.0"
|
29
|
-
spec.add_development_dependency "
|
29
|
+
spec.add_development_dependency "coveralls_reborn", '~> 0.13'
|
30
30
|
spec.add_development_dependency "bundler", "~> 1.14"
|
31
31
|
spec.add_development_dependency "rake", "~> 12.0"
|
32
32
|
spec.add_development_dependency "rails", ">= 4.2"
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: we-call
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.9.
|
4
|
+
version: 0.9.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- WeWork Engineering
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2020-11-24 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: typhoeus
|
@@ -87,19 +87,19 @@ dependencies:
|
|
87
87
|
- !ruby/object:Gem::Version
|
88
88
|
version: '2.0'
|
89
89
|
- !ruby/object:Gem::Dependency
|
90
|
-
name:
|
90
|
+
name: coveralls_reborn
|
91
91
|
requirement: !ruby/object:Gem::Requirement
|
92
92
|
requirements:
|
93
93
|
- - "~>"
|
94
94
|
- !ruby/object:Gem::Version
|
95
|
-
version: '0.
|
95
|
+
version: '0.13'
|
96
96
|
type: :development
|
97
97
|
prerelease: false
|
98
98
|
version_requirements: !ruby/object:Gem::Requirement
|
99
99
|
requirements:
|
100
100
|
- - "~>"
|
101
101
|
- !ruby/object:Gem::Version
|
102
|
-
version: '0.
|
102
|
+
version: '0.13'
|
103
103
|
- !ruby/object:Gem::Dependency
|
104
104
|
name: bundler
|
105
105
|
requirement: !ruby/object:Gem::Requirement
|
@@ -207,7 +207,9 @@ executables: []
|
|
207
207
|
extensions: []
|
208
208
|
extra_rdoc_files: []
|
209
209
|
files:
|
210
|
+
- ".circleci/config.yml"
|
210
211
|
- ".coveralls.yml"
|
212
|
+
- ".github/workflows/build.yml"
|
211
213
|
- ".gitignore"
|
212
214
|
- ".rspec"
|
213
215
|
- ".travis.yml"
|
@@ -227,6 +229,8 @@ files:
|
|
227
229
|
- lib/we/call/middleware/server.rb
|
228
230
|
- lib/we/call/middleware/server/log_user_agent.rb
|
229
231
|
- lib/we/call/version.rb
|
232
|
+
- script/cibuild
|
233
|
+
- script/publish_gem
|
230
234
|
- we-call.gemspec
|
231
235
|
homepage: https://github.com/wework/we-call-gem
|
232
236
|
licenses:
|
@@ -247,8 +251,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
247
251
|
- !ruby/object:Gem::Version
|
248
252
|
version: '0'
|
249
253
|
requirements: []
|
250
|
-
|
251
|
-
rubygems_version: 2.6.14
|
254
|
+
rubygems_version: 3.0.3
|
252
255
|
signing_key:
|
253
256
|
specification_version: 4
|
254
257
|
summary: Making healthy, happy HTTP calls
|