salesforce_adapter 1.0.1 → 1.0.2
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 +4 -4
- data/lib/salesforce_adapter/helpers.rb +34 -5
- data/lib/salesforce_adapter/rforce_binding.rb +2 -26
- data/lib/salesforce_adapter/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 4f5a0eea6dfc65e80b4152d887240138472b0bc5
|
4
|
+
data.tar.gz: ade8be12c9fe884cdd054a4b58a65e3023599311
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: feaa9eb90bb15e1afc501da8584efc5f9f52b5c1beb3fee5c82c8b56cffff9c6f031f446904e3dc5352218d3238761ef7efba7af63770911ef9193e219d79a43
|
7
|
+
data.tar.gz: 03250258d1c9c21517cadab6812621f2532178a019e696e78732db221f4c5f96edc7c8829549f41d07cc3d3207dceb1015272ff6715062aa2f70eb41ca7eb81e
|
@@ -9,11 +9,27 @@ module SalesforceAdapter
|
|
9
9
|
|
10
10
|
module Helpers
|
11
11
|
|
12
|
+
# Potential errors raisable if the salesforce API is down
|
13
|
+
TIMEOUT_ERRORS = [
|
14
|
+
Timeout::Error,
|
15
|
+
Errno::EINVAL,
|
16
|
+
Errno::ECONNRESET,
|
17
|
+
Errno::ETIMEDOUT,
|
18
|
+
Errno::EHOSTUNREACH,
|
19
|
+
Errno::ECONNREFUSED,
|
20
|
+
Errno::EPIPE,
|
21
|
+
EOFError,
|
22
|
+
Net::HTTPBadResponse,
|
23
|
+
Net::HTTPHeaderSyntaxError,
|
24
|
+
Net::ProtocolError,
|
25
|
+
SocketError
|
26
|
+
]
|
27
|
+
|
12
28
|
class << self
|
13
29
|
|
14
30
|
# Attemps to run a salesforce operation a given number of times,
|
15
31
|
# Handle timeout errors and sleep between retries
|
16
|
-
def handle_timeout(opts= {}
|
32
|
+
def handle_timeout(opts= {})
|
17
33
|
|
18
34
|
max_tries = opts[:max_tries] || 1
|
19
35
|
sleep_between_tries = opts[:sleep_between_tries] || 1
|
@@ -22,13 +38,26 @@ module SalesforceAdapter
|
|
22
38
|
|
23
39
|
begin
|
24
40
|
counter += 1
|
25
|
-
yield
|
41
|
+
yield if block_given?
|
26
42
|
|
27
|
-
|
43
|
+
# Standard ruby exceptions when a remote host is down
|
44
|
+
rescue *TIMEOUT_ERRORS => e
|
28
45
|
raise SalesforceAdapter::SalesforceTimeout.new(e.message) if counter >= max_tries
|
29
|
-
|
30
|
-
sleep sleep_between_tries
|
46
|
+
Kernel.sleep sleep_between_tries
|
31
47
|
retry
|
48
|
+
|
49
|
+
# The RForce gem may raise runtime errors if salesforce is down (e.g : when logging in)
|
50
|
+
rescue RuntimeError => e
|
51
|
+
|
52
|
+
if e.message.match /SERVER_UNAVAILABLE/
|
53
|
+
raise SalesforceAdapter::SalesforceTimeout.new(e.message) if counter >= max_tries
|
54
|
+
Kernel.sleep sleep_between_tries
|
55
|
+
retry
|
56
|
+
|
57
|
+
else
|
58
|
+
raise
|
59
|
+
end
|
60
|
+
|
32
61
|
end
|
33
62
|
|
34
63
|
end
|
@@ -4,23 +4,6 @@ module SalesforceAdapter
|
|
4
4
|
|
5
5
|
class RforceBinding
|
6
6
|
|
7
|
-
# Potential errors raisable is the salesforce API is down
|
8
|
-
TIMEOUT_ERRORS = [
|
9
|
-
Timeout::Error,
|
10
|
-
Errno::EINVAL,
|
11
|
-
Errno::ECONNRESET,
|
12
|
-
Errno::ETIMEDOUT,
|
13
|
-
Errno::EHOSTUNREACH,
|
14
|
-
Errno::ECONNREFUSED,
|
15
|
-
Errno::EPIPE,
|
16
|
-
EOFError,
|
17
|
-
Net::HTTPBadResponse,
|
18
|
-
Net::HTTPHeaderSyntaxError,
|
19
|
-
Net::ProtocolError,
|
20
|
-
# OpenURI::HTTPError,
|
21
|
-
SocketError
|
22
|
-
]
|
23
|
-
|
24
7
|
def initialize(url, login, password)
|
25
8
|
@url = url
|
26
9
|
@login = login
|
@@ -32,9 +15,7 @@ module SalesforceAdapter
|
|
32
15
|
|
33
16
|
# Attempts to login to salesforce
|
34
17
|
def login
|
35
|
-
|
36
|
-
@rforce.login( @login , @password )
|
37
|
-
end
|
18
|
+
@rforce.login( @login , @password )
|
38
19
|
end
|
39
20
|
|
40
21
|
|
@@ -51,16 +32,11 @@ module SalesforceAdapter
|
|
51
32
|
|
52
33
|
define_method method_name do |*args, &block|
|
53
34
|
|
54
|
-
|
35
|
+
Helpers.handle_timeout(:max_tries => 4, :sleep_between_tries => 2) do
|
55
36
|
|
56
|
-
# Guarantee the binding is logged in
|
57
37
|
login unless logged_in?
|
58
|
-
|
59
38
|
@rforce.send method_name, *args, &block
|
60
39
|
|
61
|
-
# Handle timeouts from salesforce
|
62
|
-
rescue *TIMEOUT_ERRORS => e
|
63
|
-
raise SalesforceAdapter::SalesforceTimeout.new(e.message)
|
64
40
|
end
|
65
41
|
|
66
42
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: salesforce_adapter
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- ClicRDV
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-
|
11
|
+
date: 2014-05-09 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rforce
|