ae_network_connection_exception 1.5.1 → 1.6.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/LICENSE.txt +1 -3
- data/ae_network_connection_exception.gemspec +13 -19
- data/lib/ae_network_connection_exception/version.rb +1 -1
- metadata +12 -147
- data/README.md +0 -40
- data/Rakefile +0 -21
- data/test/ae_network_connection_exception_test.rb +0 -114
- data/test/test_helper.rb +0 -26
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 670bacf7b250485b96be28e6623494ea3ef88e93830b27de6c7141d273d53737
|
4
|
+
data.tar.gz: cdcfd66f3fedd185fdb58fc8f6cdd2da0da799ddb22166a1ce270d608c8378fb
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 371c96edecc48bf85bde49dbe33a12afd216da04f40db63ae9bbbedbdcd200e10fe995467a9d60dc385542f1869e5f39440f77dbc731707cf0555ac1f36f4319
|
7
|
+
data.tar.gz: f0822a534739ba7d31c14b37873236d41c6a8adae6714ecd86f50ae95ee01ea800576963b158fee142ef88349fb3785f4dec8ec21addaeabf220cc851783baa1
|
data/LICENSE.txt
CHANGED
@@ -3,24 +3,18 @@
|
|
3
3
|
require_relative 'lib/ae_network_connection_exception/version'
|
4
4
|
|
5
5
|
Gem::Specification.new do |spec|
|
6
|
-
spec.name
|
7
|
-
spec.version
|
8
|
-
spec.
|
9
|
-
spec.
|
10
|
-
spec.
|
11
|
-
spec.description
|
12
|
-
spec.
|
13
|
-
spec.
|
14
|
-
spec.
|
15
|
-
spec.
|
6
|
+
spec.name = 'ae_network_connection_exception'
|
7
|
+
spec.version = AeNetworkConnectionException::VERSION
|
8
|
+
spec.platform = Gem::Platform::RUBY
|
9
|
+
spec.author = 'AppFolio'
|
10
|
+
spec.email = 'opensource@appfolio.com'
|
11
|
+
spec.description = 'Catch exceptions related to establishing a network connection and return a generic error.'
|
12
|
+
spec.summary = 'Provides sane exceptions for network failures.'
|
13
|
+
spec.homepage = 'https://github.com/appfolio/ae_network_connection_exception'
|
14
|
+
spec.license = 'MIT'
|
15
|
+
spec.files = Dir['**/*'].select { |f| f[%r{^(lib/|LICENSE.txt|.*gemspec)}] }
|
16
|
+
spec.require_paths = ['lib']
|
17
|
+
spec.required_ruby_version = Gem::Requirement.new('>= 2.6.3')
|
16
18
|
|
17
|
-
spec.
|
18
|
-
spec.add_development_dependency('bundler', ['>= 1.7', '< 3.0'])
|
19
|
-
spec.add_development_dependency('minitest', '~> 5.0')
|
20
|
-
spec.add_development_dependency('minitest-reporters', '~> 1.4')
|
21
|
-
spec.add_development_dependency('rake', '~> 10.0')
|
22
|
-
spec.add_development_dependency('rest-client', '~> 2.0')
|
23
|
-
spec.add_development_dependency('rubocop', '~> 0.80')
|
24
|
-
spec.add_development_dependency('rubocop-minitest', '~> 0.6.2')
|
25
|
-
spec.add_development_dependency('simplecov', '~> 0.17')
|
19
|
+
spec.metadata['allowed_push_host'] = 'https://rubygems.org'
|
26
20
|
end
|
metadata
CHANGED
@@ -1,147 +1,15 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ae_network_connection_exception
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.6.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
|
-
-
|
8
|
-
autorequire:
|
7
|
+
- AppFolio
|
8
|
+
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
12
|
-
dependencies:
|
13
|
-
- !ruby/object:Gem::Dependency
|
14
|
-
name: appraisal
|
15
|
-
requirement: !ruby/object:Gem::Requirement
|
16
|
-
requirements:
|
17
|
-
- - "~>"
|
18
|
-
- !ruby/object:Gem::Version
|
19
|
-
version: '2.2'
|
20
|
-
type: :development
|
21
|
-
prerelease: false
|
22
|
-
version_requirements: !ruby/object:Gem::Requirement
|
23
|
-
requirements:
|
24
|
-
- - "~>"
|
25
|
-
- !ruby/object:Gem::Version
|
26
|
-
version: '2.2'
|
27
|
-
- !ruby/object:Gem::Dependency
|
28
|
-
name: bundler
|
29
|
-
requirement: !ruby/object:Gem::Requirement
|
30
|
-
requirements:
|
31
|
-
- - ">="
|
32
|
-
- !ruby/object:Gem::Version
|
33
|
-
version: '1.7'
|
34
|
-
- - "<"
|
35
|
-
- !ruby/object:Gem::Version
|
36
|
-
version: '3.0'
|
37
|
-
type: :development
|
38
|
-
prerelease: false
|
39
|
-
version_requirements: !ruby/object:Gem::Requirement
|
40
|
-
requirements:
|
41
|
-
- - ">="
|
42
|
-
- !ruby/object:Gem::Version
|
43
|
-
version: '1.7'
|
44
|
-
- - "<"
|
45
|
-
- !ruby/object:Gem::Version
|
46
|
-
version: '3.0'
|
47
|
-
- !ruby/object:Gem::Dependency
|
48
|
-
name: minitest
|
49
|
-
requirement: !ruby/object:Gem::Requirement
|
50
|
-
requirements:
|
51
|
-
- - "~>"
|
52
|
-
- !ruby/object:Gem::Version
|
53
|
-
version: '5.0'
|
54
|
-
type: :development
|
55
|
-
prerelease: false
|
56
|
-
version_requirements: !ruby/object:Gem::Requirement
|
57
|
-
requirements:
|
58
|
-
- - "~>"
|
59
|
-
- !ruby/object:Gem::Version
|
60
|
-
version: '5.0'
|
61
|
-
- !ruby/object:Gem::Dependency
|
62
|
-
name: minitest-reporters
|
63
|
-
requirement: !ruby/object:Gem::Requirement
|
64
|
-
requirements:
|
65
|
-
- - "~>"
|
66
|
-
- !ruby/object:Gem::Version
|
67
|
-
version: '1.4'
|
68
|
-
type: :development
|
69
|
-
prerelease: false
|
70
|
-
version_requirements: !ruby/object:Gem::Requirement
|
71
|
-
requirements:
|
72
|
-
- - "~>"
|
73
|
-
- !ruby/object:Gem::Version
|
74
|
-
version: '1.4'
|
75
|
-
- !ruby/object:Gem::Dependency
|
76
|
-
name: rake
|
77
|
-
requirement: !ruby/object:Gem::Requirement
|
78
|
-
requirements:
|
79
|
-
- - "~>"
|
80
|
-
- !ruby/object:Gem::Version
|
81
|
-
version: '10.0'
|
82
|
-
type: :development
|
83
|
-
prerelease: false
|
84
|
-
version_requirements: !ruby/object:Gem::Requirement
|
85
|
-
requirements:
|
86
|
-
- - "~>"
|
87
|
-
- !ruby/object:Gem::Version
|
88
|
-
version: '10.0'
|
89
|
-
- !ruby/object:Gem::Dependency
|
90
|
-
name: rest-client
|
91
|
-
requirement: !ruby/object:Gem::Requirement
|
92
|
-
requirements:
|
93
|
-
- - "~>"
|
94
|
-
- !ruby/object:Gem::Version
|
95
|
-
version: '2.0'
|
96
|
-
type: :development
|
97
|
-
prerelease: false
|
98
|
-
version_requirements: !ruby/object:Gem::Requirement
|
99
|
-
requirements:
|
100
|
-
- - "~>"
|
101
|
-
- !ruby/object:Gem::Version
|
102
|
-
version: '2.0'
|
103
|
-
- !ruby/object:Gem::Dependency
|
104
|
-
name: rubocop
|
105
|
-
requirement: !ruby/object:Gem::Requirement
|
106
|
-
requirements:
|
107
|
-
- - "~>"
|
108
|
-
- !ruby/object:Gem::Version
|
109
|
-
version: '0.80'
|
110
|
-
type: :development
|
111
|
-
prerelease: false
|
112
|
-
version_requirements: !ruby/object:Gem::Requirement
|
113
|
-
requirements:
|
114
|
-
- - "~>"
|
115
|
-
- !ruby/object:Gem::Version
|
116
|
-
version: '0.80'
|
117
|
-
- !ruby/object:Gem::Dependency
|
118
|
-
name: rubocop-minitest
|
119
|
-
requirement: !ruby/object:Gem::Requirement
|
120
|
-
requirements:
|
121
|
-
- - "~>"
|
122
|
-
- !ruby/object:Gem::Version
|
123
|
-
version: 0.6.2
|
124
|
-
type: :development
|
125
|
-
prerelease: false
|
126
|
-
version_requirements: !ruby/object:Gem::Requirement
|
127
|
-
requirements:
|
128
|
-
- - "~>"
|
129
|
-
- !ruby/object:Gem::Version
|
130
|
-
version: 0.6.2
|
131
|
-
- !ruby/object:Gem::Dependency
|
132
|
-
name: simplecov
|
133
|
-
requirement: !ruby/object:Gem::Requirement
|
134
|
-
requirements:
|
135
|
-
- - "~>"
|
136
|
-
- !ruby/object:Gem::Version
|
137
|
-
version: '0.17'
|
138
|
-
type: :development
|
139
|
-
prerelease: false
|
140
|
-
version_requirements: !ruby/object:Gem::Requirement
|
141
|
-
requirements:
|
142
|
-
- - "~>"
|
143
|
-
- !ruby/object:Gem::Version
|
144
|
-
version: '0.17'
|
11
|
+
date: 2022-02-22 00:00:00.000000000 Z
|
12
|
+
dependencies: []
|
145
13
|
description: Catch exceptions related to establishing a network connection and return
|
146
14
|
a generic error.
|
147
15
|
email: opensource@appfolio.com
|
@@ -150,18 +18,15 @@ extensions: []
|
|
150
18
|
extra_rdoc_files: []
|
151
19
|
files:
|
152
20
|
- LICENSE.txt
|
153
|
-
- README.md
|
154
|
-
- Rakefile
|
155
21
|
- ae_network_connection_exception.gemspec
|
156
22
|
- lib/ae_network_connection_exception.rb
|
157
23
|
- lib/ae_network_connection_exception/version.rb
|
158
|
-
- test/ae_network_connection_exception_test.rb
|
159
|
-
- test/test_helper.rb
|
160
24
|
homepage: https://github.com/appfolio/ae_network_connection_exception
|
161
25
|
licenses:
|
162
26
|
- MIT
|
163
|
-
metadata:
|
164
|
-
|
27
|
+
metadata:
|
28
|
+
allowed_push_host: https://rubygems.org
|
29
|
+
post_install_message:
|
165
30
|
rdoc_options: []
|
166
31
|
require_paths:
|
167
32
|
- lib
|
@@ -169,15 +34,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
169
34
|
requirements:
|
170
35
|
- - ">="
|
171
36
|
- !ruby/object:Gem::Version
|
172
|
-
version:
|
37
|
+
version: 2.6.3
|
173
38
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
174
39
|
requirements:
|
175
40
|
- - ">="
|
176
41
|
- !ruby/object:Gem::Version
|
177
42
|
version: '0'
|
178
43
|
requirements: []
|
179
|
-
rubygems_version: 3.
|
180
|
-
signing_key:
|
44
|
+
rubygems_version: 3.3.3
|
45
|
+
signing_key:
|
181
46
|
specification_version: 4
|
182
|
-
summary: Provides sane exceptions for network failures
|
47
|
+
summary: Provides sane exceptions for network failures.
|
183
48
|
test_files: []
|
data/README.md
DELETED
@@ -1,40 +0,0 @@
|
|
1
|
-
# AeNetworkConnectionException
|
2
|
-
|
3
|
-
Catch exceptions related to establishing a network connection and return a generic error.
|
4
|
-
|
5
|
-
## Installation
|
6
|
-
|
7
|
-
Add this line to your application's Gemfile:
|
8
|
-
|
9
|
-
```ruby
|
10
|
-
gem 'ae_network_connection_exception'
|
11
|
-
```
|
12
|
-
|
13
|
-
And then execute:
|
14
|
-
|
15
|
-
$ bundle
|
16
|
-
|
17
|
-
Or install it yourself as:
|
18
|
-
|
19
|
-
$ gem install ae_network_connection_exception
|
20
|
-
|
21
|
-
## Usage
|
22
|
-
|
23
|
-
```ruby
|
24
|
-
AeNetworkConnectionException.try do
|
25
|
-
# your code that will make a network call
|
26
|
-
end
|
27
|
-
```
|
28
|
-
|
29
|
-
If your network call failed to establish a network connection, an exception of this type will be thrown:
|
30
|
-
```ruby
|
31
|
-
AeNetworkConnectionException::ConnectionNotEstablished
|
32
|
-
```
|
33
|
-
|
34
|
-
## Contributing
|
35
|
-
|
36
|
-
1. Fork it (https://github.com/appfolio/ae_network_connection_exception/fork)
|
37
|
-
2. Create your feature branch (`git checkout -b my-new-feature`)
|
38
|
-
3. Commit your changes (`git commit -am 'Add some feature'`)
|
39
|
-
4. Push to the branch (`git push origin my-new-feature`)
|
40
|
-
5. Create a new Pull Request
|
data/Rakefile
DELETED
@@ -1,21 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require 'bundler'
|
4
|
-
|
5
|
-
begin
|
6
|
-
Bundler.setup(:default, :development)
|
7
|
-
rescue Bundler::BundlerError => e
|
8
|
-
warn e.message
|
9
|
-
warn 'Run `bundle install` to install missing gems'
|
10
|
-
exit e.status_code
|
11
|
-
end
|
12
|
-
|
13
|
-
require 'rake/testtask'
|
14
|
-
|
15
|
-
Rake::TestTask.new(:test) do |test|
|
16
|
-
test.libs << 'lib' << 'test'
|
17
|
-
test.pattern = 'test/**/*_test.rb'
|
18
|
-
test.verbose = true
|
19
|
-
end
|
20
|
-
|
21
|
-
task default: :test
|
@@ -1,114 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require 'test_helper'
|
4
|
-
|
5
|
-
module AeNetworkConnectionException
|
6
|
-
class AeNetworkConnectionExceptionTest < Minitest::Test
|
7
|
-
def test_that_it_has_a_version_number
|
8
|
-
refute_nil ::AeNetworkConnectionException::VERSION
|
9
|
-
end
|
10
|
-
|
11
|
-
def test_connection_not_established_exception
|
12
|
-
parent_exception = AeNetworkConnectionException::ConnectionNotEstablished.new('Parent Message')
|
13
|
-
|
14
|
-
assert_nil parent_exception.cause
|
15
|
-
assert_equal 'Parent Message', parent_exception.message
|
16
|
-
|
17
|
-
begin
|
18
|
-
child_exception = nil
|
19
|
-
begin
|
20
|
-
raise StandardError, 'New Child Message'
|
21
|
-
rescue StandardError => e
|
22
|
-
child_exception = e
|
23
|
-
AeNetworkConnectionException::ConnectionNotEstablished.new('New Parent Message')
|
24
|
-
end
|
25
|
-
rescue AeNetworkConnectionException::ConnectionNotEstablished => e
|
26
|
-
refute_nil child_exception
|
27
|
-
assert_equal child_exception, e.cause
|
28
|
-
assert_equal 'New Parent Message, cause => StandardError: New Child Message', e.message
|
29
|
-
end
|
30
|
-
end
|
31
|
-
|
32
|
-
def test_ae_network_connection_exception_try__doesnt_catch_non_network_exceptions
|
33
|
-
exception = StandardError.new
|
34
|
-
e = return_raised_error do
|
35
|
-
AeNetworkConnectionException.try do
|
36
|
-
raise exception
|
37
|
-
end
|
38
|
-
end
|
39
|
-
assert_equal exception, e
|
40
|
-
end
|
41
|
-
|
42
|
-
def test_ae_network_connection_exception_try__raises_connection_not_establised_exception
|
43
|
-
AeNetworkConnectionException.exception_signatures.each do |e|
|
44
|
-
assert_connection_not_established_thrown_for(e)
|
45
|
-
end
|
46
|
-
|
47
|
-
econnreset = Errno::ECONNRESET.new('Connection timed out - connect(2) for "example.com" port 443')
|
48
|
-
assert_connection_not_established_not_thrown_for(econnreset)
|
49
|
-
etimeout = Errno::ETIMEDOUT.new('Connection timed out - recvfrom(2) for "example.com" port 443')
|
50
|
-
assert_connection_not_established_not_thrown_for(etimeout)
|
51
|
-
end
|
52
|
-
|
53
|
-
def test_ae_network_connection_exception_try__raises_connection_not_establised_exception_rest_client_open_timeout
|
54
|
-
open_timeout = RestClient::Exceptions::OpenTimeout.new
|
55
|
-
assert_connection_not_established_thrown_for(open_timeout)
|
56
|
-
end
|
57
|
-
|
58
|
-
def test_exception_signatures
|
59
|
-
assert_equal expected_signatures.size, AeNetworkConnectionException.exception_signatures.size
|
60
|
-
|
61
|
-
expected_signatures.each do |e|
|
62
|
-
assert_includes AeNetworkConnectionException.exception_signatures, e
|
63
|
-
end
|
64
|
-
end
|
65
|
-
|
66
|
-
def test_rest_client_not_defined
|
67
|
-
old = RestClient::Exceptions::OpenTimeout
|
68
|
-
RestClient::Exceptions.send(:remove_const, :OpenTimeout)
|
69
|
-
|
70
|
-
assert_empty AeNetworkConnectionException.send(:other_exceptions)
|
71
|
-
ensure
|
72
|
-
RestClient::Exceptions.const_set(:OpenTimeout, old)
|
73
|
-
end
|
74
|
-
|
75
|
-
private
|
76
|
-
|
77
|
-
def expected_signatures
|
78
|
-
[
|
79
|
-
SocketError.new('getaddrinfo: Name or service not known'),
|
80
|
-
Errno::ECONNREFUSED.new('Connection refused - connect(2) for "example.com" port 443'),
|
81
|
-
Errno::ETIMEDOUT.new('Connection timed out - connect(2) for "example.com" port 443'),
|
82
|
-
Net::OpenTimeout.new('message'),
|
83
|
-
Errno::ECONNRESET.new('Connection reset by peer - SSL_connect'),
|
84
|
-
Errno::EHOSTUNREACH.new('No route to host - connect(2) for "example.com" port 443'),
|
85
|
-
Errno::ENETUNREACH.new('Network is unreachable - connect(2) for "example.com" port 443')
|
86
|
-
]
|
87
|
-
end
|
88
|
-
|
89
|
-
def assert_connection_not_established_thrown_for(exception)
|
90
|
-
e = return_raised_error do
|
91
|
-
AeNetworkConnectionException.try do
|
92
|
-
raise exception
|
93
|
-
end
|
94
|
-
end
|
95
|
-
assert_equal AeNetworkConnectionException::ConnectionNotEstablished, e.class
|
96
|
-
assert_equal exception, e.cause
|
97
|
-
end
|
98
|
-
|
99
|
-
def assert_connection_not_established_not_thrown_for(exception)
|
100
|
-
e = return_raised_error do
|
101
|
-
AeNetworkConnectionException.try do
|
102
|
-
raise exception
|
103
|
-
end
|
104
|
-
end
|
105
|
-
assert_equal exception, e
|
106
|
-
end
|
107
|
-
|
108
|
-
def return_raised_error
|
109
|
-
yield
|
110
|
-
rescue StandardError => e
|
111
|
-
e
|
112
|
-
end
|
113
|
-
end
|
114
|
-
end
|
data/test/test_helper.rb
DELETED
@@ -1,26 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require 'bundler'
|
4
|
-
|
5
|
-
begin
|
6
|
-
Bundler.setup(:default, :development)
|
7
|
-
rescue Bundler::BundlerError => e
|
8
|
-
warn e.message
|
9
|
-
warn 'Run `bundle install` to install missing gems'
|
10
|
-
exit e.status_code
|
11
|
-
end
|
12
|
-
|
13
|
-
if ENV['WITH_COVERAGE'] == 'true'
|
14
|
-
require 'simplecov'
|
15
|
-
SimpleCov.start do
|
16
|
-
enable_coverage :branch
|
17
|
-
add_filter %r{\A/test}
|
18
|
-
end
|
19
|
-
end
|
20
|
-
|
21
|
-
require 'ae_network_connection_exception'
|
22
|
-
require 'minitest/autorun'
|
23
|
-
require 'minitest/reporters'
|
24
|
-
require 'rest-client'
|
25
|
-
|
26
|
-
MiniTest::Reporters.use!
|