activeresource_connections2 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 88e827b9a56985a4cb359de02e09134b5a697177
4
+ data.tar.gz: 0c97d431881c33da619443628c8f44526b4edd12
5
+ SHA512:
6
+ metadata.gz: 53d302a1ee8d7831f5c5b0838891c510374f2d2aa37b11d371b50a8e4accbdc5b875c15ed4be0bc0906565ad191c525ab665cfd6b08b6e462a482b46b62da4f0
7
+ data.tar.gz: 08168d66c83b93a135ba42551a1c830d349e63ba5a2b6453e89c19d908c9f64180234a3f7587a3d51492857f0dcca6e1a71c2ea70d853e2ec490f0fddfb0ca7c
@@ -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.retryable(retriable_options) { super }
32
+ end
33
+
34
+ end
@@ -0,0 +1 @@
1
+ require 'active_resource/connections'
metadata ADDED
@@ -0,0 +1,143 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: activeresource_connections2
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.2.0
5
+ platform: ruby
6
+ authors:
7
+ - Dimitrij Denissenko
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2015-01-20 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: activeresource
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '4.0'
20
+ - - ">="
21
+ - !ruby/object:Gem::Version
22
+ version: 4.0.0
23
+ type: :runtime
24
+ prerelease: false
25
+ version_requirements: !ruby/object:Gem::Requirement
26
+ requirements:
27
+ - - "~>"
28
+ - !ruby/object:Gem::Version
29
+ version: '4.0'
30
+ - - ">="
31
+ - !ruby/object:Gem::Version
32
+ version: 4.0.0
33
+ - !ruby/object:Gem::Dependency
34
+ name: retryable
35
+ requirement: !ruby/object:Gem::Requirement
36
+ requirements:
37
+ - - "~>"
38
+ - !ruby/object:Gem::Version
39
+ version: '2.0'
40
+ - - ">="
41
+ - !ruby/object:Gem::Version
42
+ version: 2.0.0
43
+ type: :runtime
44
+ prerelease: false
45
+ version_requirements: !ruby/object:Gem::Requirement
46
+ requirements:
47
+ - - "~>"
48
+ - !ruby/object:Gem::Version
49
+ version: '2.0'
50
+ - - ">="
51
+ - !ruby/object:Gem::Version
52
+ version: 2.0.0
53
+ - !ruby/object:Gem::Dependency
54
+ name: rake
55
+ requirement: !ruby/object:Gem::Requirement
56
+ requirements:
57
+ - - "~>"
58
+ - !ruby/object:Gem::Version
59
+ version: '10.4'
60
+ type: :development
61
+ prerelease: false
62
+ version_requirements: !ruby/object:Gem::Requirement
63
+ requirements:
64
+ - - "~>"
65
+ - !ruby/object:Gem::Version
66
+ version: '10.4'
67
+ - !ruby/object:Gem::Dependency
68
+ name: bundler
69
+ requirement: !ruby/object:Gem::Requirement
70
+ requirements:
71
+ - - "~>"
72
+ - !ruby/object:Gem::Version
73
+ version: '1.7'
74
+ type: :development
75
+ prerelease: false
76
+ version_requirements: !ruby/object:Gem::Requirement
77
+ requirements:
78
+ - - "~>"
79
+ - !ruby/object:Gem::Version
80
+ version: '1.7'
81
+ - !ruby/object:Gem::Dependency
82
+ name: rspec
83
+ requirement: !ruby/object:Gem::Requirement
84
+ requirements:
85
+ - - "~>"
86
+ - !ruby/object:Gem::Version
87
+ version: '3.1'
88
+ type: :development
89
+ prerelease: false
90
+ version_requirements: !ruby/object:Gem::Requirement
91
+ requirements:
92
+ - - "~>"
93
+ - !ruby/object:Gem::Version
94
+ version: '3.1'
95
+ - !ruby/object:Gem::Dependency
96
+ name: webmock
97
+ requirement: !ruby/object:Gem::Requirement
98
+ requirements:
99
+ - - "~>"
100
+ - !ruby/object:Gem::Version
101
+ version: '1.2'
102
+ type: :development
103
+ prerelease: false
104
+ version_requirements: !ruby/object:Gem::Requirement
105
+ requirements:
106
+ - - "~>"
107
+ - !ruby/object:Gem::Version
108
+ version: '1.2'
109
+ description: Extend your ActiveResource model's connections
110
+ email: dimitrij@blacksquaremedia.com
111
+ executables: []
112
+ extensions: []
113
+ extra_rdoc_files: []
114
+ files:
115
+ - lib/active_resource/connections.rb
116
+ - lib/active_resource/connections/core_ext.rb
117
+ - lib/active_resource/connections/retryable.rb
118
+ - lib/activeresource_connections.rb
119
+ homepage: https://github.com/bsm/activeresource_connections
120
+ licenses:
121
+ - MIT
122
+ metadata: {}
123
+ post_install_message:
124
+ rdoc_options: []
125
+ require_paths:
126
+ - lib
127
+ required_ruby_version: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - ">="
130
+ - !ruby/object:Gem::Version
131
+ version: 1.9.3
132
+ required_rubygems_version: !ruby/object:Gem::Requirement
133
+ requirements:
134
+ - - ">="
135
+ - !ruby/object:Gem::Version
136
+ version: 2.0.0
137
+ requirements: []
138
+ rubyforge_project:
139
+ rubygems_version: 2.4.5
140
+ signing_key:
141
+ specification_version: 4
142
+ summary: Custom connections for ActiveResource models
143
+ test_files: []