activeresource_connections 0.1.0
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.
@@ -0,0 +1,11 @@
|
|
1
|
+
require 'active_resource'
|
2
|
+
|
3
|
+
module ActiveResource::Connections
|
4
|
+
autoload :Retryable, 'active_resource/connections/retryable'
|
5
|
+
autoload :CoreExt, 'active_resource/connections/core_ext'
|
6
|
+
|
7
|
+
unless ActiveResource::Base.respond_to?(:connection_class)
|
8
|
+
ActiveResource::Base.send :include, CoreExt
|
9
|
+
end
|
10
|
+
end
|
11
|
+
|
@@ -0,0 +1,45 @@
|
|
1
|
+
module ActiveResource::Connections::CoreExt
|
2
|
+
extend ActiveSupport::Concern
|
3
|
+
|
4
|
+
included do
|
5
|
+
|
6
|
+
# @overload
|
7
|
+
def self.connection(refresh = false)
|
8
|
+
if defined?(@connection) || superclass == Object
|
9
|
+
@connection = connection_class.new(site, format) if refresh || @connection.nil?
|
10
|
+
@connection.proxy = proxy if proxy
|
11
|
+
@connection.user = user if user
|
12
|
+
@connection.password = password if password
|
13
|
+
@connection.auth_type = auth_type if auth_type
|
14
|
+
@connection.timeout = timeout if timeout
|
15
|
+
@connection.ssl_options = ssl_options if ssl_options
|
16
|
+
@connection
|
17
|
+
else
|
18
|
+
superclass.connection
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
end
|
23
|
+
|
24
|
+
module ClassMethods
|
25
|
+
|
26
|
+
# Gets the class used to establish connection.
|
27
|
+
def connection_class
|
28
|
+
if defined?(@connection_class) && @connection_class
|
29
|
+
@connection_class
|
30
|
+
elsif superclass != Object
|
31
|
+
superclass.connection_class
|
32
|
+
else
|
33
|
+
ActiveResource::Connection
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
# Sets the connection class for this model to the value in the +klass+ argument.
|
38
|
+
# The +klass+ should inherit from ActiveResource::Connection.
|
39
|
+
def connection_class=(klass)
|
40
|
+
@connection = nil
|
41
|
+
@connection_class = klass
|
42
|
+
end
|
43
|
+
|
44
|
+
end
|
45
|
+
end
|
@@ -0,0 +1,34 @@
|
|
1
|
+
require 'active_resource/connections'
|
2
|
+
begin
|
3
|
+
require 'retryable'
|
4
|
+
rescue LoadError
|
5
|
+
warn "Unable to find `retryable`. Please add `gem 'retryable'` to your Gemfile."
|
6
|
+
raise
|
7
|
+
end
|
8
|
+
|
9
|
+
class ActiveResource::Connections::Retryable < ActiveResource::Connection
|
10
|
+
|
11
|
+
# @return [Hash] options
|
12
|
+
# @option [Float] :sleep
|
13
|
+
# The number of seconds to wait between retries
|
14
|
+
# @option [Integer] :tries
|
15
|
+
# The number attempts
|
16
|
+
# @option [Array] :on
|
17
|
+
# A list of error classes to retry on
|
18
|
+
# @option [Regexp] :match
|
19
|
+
# Retries if error message matches given expression
|
20
|
+
class_attribute :retriable_options
|
21
|
+
self.retriable_options = {
|
22
|
+
:sleep => 0.5,
|
23
|
+
:tries => 3,
|
24
|
+
:on => [ ActiveResource::TimeoutError, ActiveResource::SSLError, Timeout::Error, OpenSSL::SSL::SSLError,
|
25
|
+
Errno::ETIMEDOUT, Errno::ECONNRESET, Errno::EHOSTUNREACH, EOFError, SocketError ]
|
26
|
+
}
|
27
|
+
|
28
|
+
protected
|
29
|
+
|
30
|
+
def request(*)
|
31
|
+
retryable(retriable_options) { super }
|
32
|
+
end
|
33
|
+
|
34
|
+
end
|
@@ -0,0 +1 @@
|
|
1
|
+
require 'active_resource/connections'
|
metadata
ADDED
@@ -0,0 +1,117 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: activeresource_connections
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.0
|
5
|
+
prerelease:
|
6
|
+
platform: ruby
|
7
|
+
authors:
|
8
|
+
- Dimitrij Denissenko
|
9
|
+
autorequire:
|
10
|
+
bindir: bin
|
11
|
+
cert_chain: []
|
12
|
+
date: 2012-01-12 00:00:00.000000000Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
name: activeresource
|
16
|
+
requirement: &12816280 !ruby/object:Gem::Requirement
|
17
|
+
none: false
|
18
|
+
requirements:
|
19
|
+
- - ! '>='
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: 3.1.0
|
22
|
+
- - <
|
23
|
+
- !ruby/object:Gem::Version
|
24
|
+
version: 3.3.0
|
25
|
+
type: :runtime
|
26
|
+
prerelease: false
|
27
|
+
version_requirements: *12816280
|
28
|
+
- !ruby/object:Gem::Dependency
|
29
|
+
name: rake
|
30
|
+
requirement: &12815000 !ruby/object:Gem::Requirement
|
31
|
+
none: false
|
32
|
+
requirements:
|
33
|
+
- - ! '>='
|
34
|
+
- !ruby/object:Gem::Version
|
35
|
+
version: '0'
|
36
|
+
type: :development
|
37
|
+
prerelease: false
|
38
|
+
version_requirements: *12815000
|
39
|
+
- !ruby/object:Gem::Dependency
|
40
|
+
name: bundler
|
41
|
+
requirement: &12814100 !ruby/object:Gem::Requirement
|
42
|
+
none: false
|
43
|
+
requirements:
|
44
|
+
- - ! '>='
|
45
|
+
- !ruby/object:Gem::Version
|
46
|
+
version: '0'
|
47
|
+
type: :development
|
48
|
+
prerelease: false
|
49
|
+
version_requirements: *12814100
|
50
|
+
- !ruby/object:Gem::Dependency
|
51
|
+
name: rspec
|
52
|
+
requirement: &12813540 !ruby/object:Gem::Requirement
|
53
|
+
none: false
|
54
|
+
requirements:
|
55
|
+
- - ! '>='
|
56
|
+
- !ruby/object:Gem::Version
|
57
|
+
version: '0'
|
58
|
+
type: :development
|
59
|
+
prerelease: false
|
60
|
+
version_requirements: *12813540
|
61
|
+
- !ruby/object:Gem::Dependency
|
62
|
+
name: retryable
|
63
|
+
requirement: &12812700 !ruby/object:Gem::Requirement
|
64
|
+
none: false
|
65
|
+
requirements:
|
66
|
+
- - ! '>='
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '0'
|
69
|
+
type: :development
|
70
|
+
prerelease: false
|
71
|
+
version_requirements: *12812700
|
72
|
+
- !ruby/object:Gem::Dependency
|
73
|
+
name: webmock
|
74
|
+
requirement: &12811420 !ruby/object:Gem::Requirement
|
75
|
+
none: false
|
76
|
+
requirements:
|
77
|
+
- - ! '>='
|
78
|
+
- !ruby/object:Gem::Version
|
79
|
+
version: '0'
|
80
|
+
type: :development
|
81
|
+
prerelease: false
|
82
|
+
version_requirements: *12811420
|
83
|
+
description: Extend your ActiveResource model's connections
|
84
|
+
email: dimitrij@blacksquaremedia.com
|
85
|
+
executables: []
|
86
|
+
extensions: []
|
87
|
+
extra_rdoc_files: []
|
88
|
+
files:
|
89
|
+
- lib/active_resource/connections/core_ext.rb
|
90
|
+
- lib/active_resource/connections/retryable.rb
|
91
|
+
- lib/active_resource/connections.rb
|
92
|
+
- lib/activeresource_connections.rb
|
93
|
+
homepage: https://github.com/bsm/activeresource_connections
|
94
|
+
licenses: []
|
95
|
+
post_install_message:
|
96
|
+
rdoc_options: []
|
97
|
+
require_paths:
|
98
|
+
- lib
|
99
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
100
|
+
none: false
|
101
|
+
requirements:
|
102
|
+
- - ! '>='
|
103
|
+
- !ruby/object:Gem::Version
|
104
|
+
version: 1.9.0
|
105
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
106
|
+
none: false
|
107
|
+
requirements:
|
108
|
+
- - ! '>='
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
version: 1.3.6
|
111
|
+
requirements: []
|
112
|
+
rubyforge_project:
|
113
|
+
rubygems_version: 1.8.10
|
114
|
+
signing_key:
|
115
|
+
specification_version: 3
|
116
|
+
summary: Custom connections for ActiveResource models
|
117
|
+
test_files: []
|