activeresource_connections2 0.2.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.
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: []