wrest 1.5.3 → 1.5.4
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG +3 -0
- data/README.md +22 -11
- data/lib/wrest/async_request.rb +2 -2
- data/lib/wrest/async_request/thread_pool.rb +8 -6
- data/lib/wrest/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: c2ef12f85a25ae1566e9dc1b687a364d765f6a08
|
4
|
+
data.tar.gz: fb83d920f115473b271d16cad06195fb73524d00
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a88c38044cafcad5a161e4fd974b8023600c830865f1734451a5e948720d647b828f73caeca7b89ef008b6f8c472c44e2a05cc8b4602458939280427dd7121ab
|
7
|
+
data.tar.gz: baff6d4f993a61763836866bd838b0517c802aaa1547593aeb07b92c5a599defa77a70db5616e2e3bdacec48b343c4c78f1513990e4bb1727d537d69f5a17688
|
data/CHANGELOG
CHANGED
@@ -2,6 +2,9 @@ Features under the section marked 'Current' are completed but pending release as
|
|
2
2
|
|
3
3
|
Features under a numbered section are complete and available in the Wrest gem.
|
4
4
|
|
5
|
+
== 1.5.4
|
6
|
+
* Make thread pool configurable
|
7
|
+
|
5
8
|
== 1.5.3
|
6
9
|
* Implemented a thread pool for async requests using ThreadBackend
|
7
10
|
* Updated request/response logging to include current thread id
|
data/README.md
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
[![Build Status](https://travis-ci.org/c42/wrest.svg?branch=master)](https://travis-ci.org/c42/wrest)
|
2
2
|
|
3
|
-
# Wrest 1.5.
|
3
|
+
# Wrest 1.5.4
|
4
4
|
|
5
5
|
(c) Copyright 2009-2015 [Sidu Ponnappa](http://twitter.com/ponnappa). All Rights Reserved.
|
6
6
|
|
@@ -9,10 +9,7 @@ Wrest is a ruby REST/HTTP client library which
|
|
9
9
|
* Allows you to use Net::HTTP or libCurl
|
10
10
|
* Allows you to pick your Ruby: use 2.x.x, JRuby 1.7.6 (and higher), JRuby 9.0.0.0.pre2
|
11
11
|
* Supports RFC 2616 based [caching](https://github.com/kaiwren/wrest/blob/caching/Caching.markdown)
|
12
|
-
*
|
13
|
-
|
14
|
-
Allows you to go async: use Threads or EventMachine
|
15
|
-
|
12
|
+
* Async http calls using Threads (reliable only on JRuby) or EventMachine
|
16
13
|
* Allows you to quickly build object oriented wrappers around any web service
|
17
14
|
* Is designed to be used as a library, not just a command line REST client (fewer class/static methods, more object oriented)
|
18
15
|
* Is spec driven, strongly favours immutable objects and avoids class methods and setters making it better suited for use as a library, especially in multi-threaded environments
|
@@ -31,15 +28,16 @@ For Facebook, Twitter, Delicious, GitHub and other API examples, see http://gith
|
|
31
28
|
* Basic API calls
|
32
29
|
|
33
30
|
```
|
34
|
-
|
35
|
-
|
36
|
-
|
31
|
+
# Works with json and xml out of the box
|
32
|
+
# See lib/wrest/components/translators to add other formats
|
33
|
+
|
34
|
+
'https://api.github.com/repos/c42/wrest/issues'.to_uri.get.deserialize
|
37
35
|
```
|
38
36
|
|
39
37
|
* Timeout support
|
40
38
|
|
41
39
|
```
|
42
|
-
'
|
40
|
+
'https://api.github.com/repos/c42/wrest/issues'.to_uri.get(:timeout => 5).body
|
43
41
|
```
|
44
42
|
|
45
43
|
* Redirect support
|
@@ -217,11 +215,15 @@ Asynchronous requests support pluggable backends. The default backend used for a
|
|
217
215
|
Wrest::AsyncRequest.wait_for_thread_pool!
|
218
216
|
```
|
219
217
|
|
220
|
-
You can change the default to eventmachine.
|
218
|
+
You can change the default to eventmachine or to threads.
|
221
219
|
|
222
220
|
```
|
223
221
|
Wrest::AsyncRequest.default_to_em!
|
224
222
|
```
|
223
|
+
or
|
224
|
+
```
|
225
|
+
Wrest::AsyncRequest.default_to_threads!
|
226
|
+
```
|
225
227
|
|
226
228
|
You can also override the default on Uri objects.
|
227
229
|
|
@@ -233,7 +235,16 @@ You can also override the default on Uri objects.
|
|
233
235
|
end
|
234
236
|
```
|
235
237
|
|
236
|
-
|
238
|
+
You can decide which AsyncBackend to use at runtime through to `to_uri`'s options hash.
|
239
|
+
|
240
|
+
```
|
241
|
+
"http://c42.in".to_uri(asynchronous_backend: ThreadBackend.new(number_of_threads)).get_async do |callback|
|
242
|
+
callback.on_ok do |response|
|
243
|
+
Wrest.logger.info "Ok."
|
244
|
+
end
|
245
|
+
end
|
246
|
+
```
|
247
|
+
|
237
248
|
|
238
249
|
### Other useful stuff
|
239
250
|
|
data/lib/wrest/async_request.rb
CHANGED
@@ -27,8 +27,8 @@ module Wrest
|
|
27
27
|
end
|
28
28
|
|
29
29
|
# Assign default backend for asynchronous request to using threads.
|
30
|
-
def self.default_to_threads!
|
31
|
-
self.default_backend = Wrest::AsyncRequest::ThreadBackend.new
|
30
|
+
def self.default_to_threads!(number_of_threads = 5)
|
31
|
+
self.default_backend = Wrest::AsyncRequest::ThreadBackend.new(number_of_threads)
|
32
32
|
end
|
33
33
|
|
34
34
|
# Returns the default backend, which is the ThreadBackend
|
@@ -14,12 +14,10 @@ module Wrest
|
|
14
14
|
@threads = []
|
15
15
|
@number_of_threads = number_of_threads
|
16
16
|
@queue = Queue.new
|
17
|
-
halt_on_sigint
|
18
|
-
halt_on_int
|
19
|
-
initialize_thread_pool
|
20
17
|
end
|
21
18
|
|
22
19
|
def execute_eventually(request)
|
20
|
+
initialize_thread_pool if @threads.empty?
|
23
21
|
@queue.push(request)
|
24
22
|
nil
|
25
23
|
end
|
@@ -32,6 +30,8 @@ module Wrest
|
|
32
30
|
|
33
31
|
private
|
34
32
|
def initialize_thread_pool
|
33
|
+
halt_on_sigint
|
34
|
+
halt_on_int
|
35
35
|
main_thread = Thread.current
|
36
36
|
@threads = @number_of_threads.times.map do |i|
|
37
37
|
Thread.new do |thread|
|
@@ -55,9 +55,11 @@ module Wrest
|
|
55
55
|
end
|
56
56
|
|
57
57
|
def halt
|
58
|
-
|
59
|
-
|
60
|
-
|
58
|
+
unless @threads.empty?
|
59
|
+
Wrest.logger.debug "Wrest: Shutting down ThreadPool..."
|
60
|
+
@threads.each(&:terminate)
|
61
|
+
Wrest.logger.debug "Wrest: Halted ThreadPool, continuing with shutdown."
|
62
|
+
end
|
61
63
|
Process.exit
|
62
64
|
end
|
63
65
|
end
|
data/lib/wrest/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: wrest
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.5.
|
4
|
+
version: 1.5.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Sidu Ponnappa
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2015-08-
|
12
|
+
date: 2015-08-05 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rspec
|