Skip to content

Commit f2d7d40

Browse files
committed
Raise ActiveResource::ConnectionError on Errno::ECONNREFUSED
1 parent df28dee commit f2d7d40

File tree

3 files changed

+17
-0
lines changed

3 files changed

+17
-0
lines changed

lib/active_resource/connection.rb

+2
Original file line numberDiff line numberDiff line change
@@ -127,6 +127,8 @@ def request(method, path, *arguments)
127127
raise TimeoutError.new(e.message)
128128
rescue OpenSSL::SSL::SSLError => e
129129
raise SSLError.new(e.message)
130+
rescue Errno::ECONNREFUSED => e
131+
raise ConnectionRefusedError.new(e.message)
130132
end
131133

132134
# Handles response and error codes from the remote service.

lib/active_resource/exceptions.rb

+8
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,14 @@ def initialize(message)
3535
def to_s; @message ; end
3636
end
3737

38+
# Raised when a Errno::ECONNREFUSED occurs.
39+
class ConnectionRefusedError < ConnectionError
40+
def initialize(message)
41+
@message = message
42+
end
43+
def to_s; @message ; end
44+
end
45+
3846
# 3xx Redirection
3947
class Redirection < ConnectionError # :nodoc:
4048
def to_s

test/cases/connection_test.rb

+7
Original file line numberDiff line numberDiff line change
@@ -282,6 +282,13 @@ def test_ssl_error
282282
assert_raise(ActiveResource::SSLError) { @conn.get("/people/1.json") }
283283
end
284284

285+
def test_handle_econnrefused
286+
http = Net::HTTP.new("")
287+
@conn.expects(:http).returns(http)
288+
http.expects(:get).raises(Errno::ECONNREFUSED, "Failed to open TCP connection")
289+
assert_raise(ActiveResource::ConnectionRefusedError) { @conn.get("/people/1.json") }
290+
end
291+
285292
def test_auth_type_can_be_string
286293
@conn.auth_type = "digest"
287294
assert_equal(:digest, @conn.auth_type)

0 commit comments

Comments
 (0)