salesforce_adapter 1.0.1 → 1.0.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: d132d277394dd4961ca29eb1546506b74a8322f5
4
- data.tar.gz: ef41eb49a9629bd650f471aeaff3adb9312516b7
3
+ metadata.gz: 4f5a0eea6dfc65e80b4152d887240138472b0bc5
4
+ data.tar.gz: ade8be12c9fe884cdd054a4b58a65e3023599311
5
5
  SHA512:
6
- metadata.gz: 28f596c1c963367196f38a3d62982b61ec57ecbd1004c5a6792e39f4116f0e3bc680bc19aaf2faeef1c99affa03e5a264b9f4e27adaec522c5c17525733b07a9
7
- data.tar.gz: 04a988086f223d0c3ba003c9ae8d7fbc46d602b7f4e2858f6e687a91558a027b3ca1190c3d467296267e882c0f9e0b3314bccabc2787a992e5201aec2a94d289
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= {}, &block)
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
- rescue Timeout::Error => e
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
- Helpers.handle_timeout(:max_tries => 4, :sleep_between_tries => 2) do
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
- begin
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
@@ -1,3 +1,3 @@
1
1
  module SalesforceAdapter
2
- VERSION = "1.0.1"
2
+ VERSION = "1.0.2"
3
3
  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.1
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-04-30 00:00:00.000000000 Z
11
+ date: 2014-05-09 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rforce