we-call 0.9.0 → 0.9.1
Sign up to get free protection for your applications and to get access to all the features.
- 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
|