tom 0.1.0 → 0.1.1
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.
- data/.rvmrc +1 -1
- data/Gemfile +2 -2
- data/Gemfile.lock +3 -33
- data/{README.markdown → README.md} +0 -0
- data/VERSION +1 -1
- data/lib/adapter.rb +37 -27
- data/lib/dispatcher.rb +22 -14
- data/lib/http.rb +9 -5
- data/lib/merger.rb +22 -17
- data/tom.gemspec +10 -10
- metadata +44 -44
data/.rvmrc
CHANGED
@@ -1 +1 @@
|
|
1
|
-
rvm --create use ruby-1.9.2-p290@
|
1
|
+
rvm --create use ruby-1.9.2-p290@tom
|
data/Gemfile
CHANGED
@@ -4,9 +4,8 @@ group :default do
|
|
4
4
|
gem "goliath"
|
5
5
|
gem "em-synchrony"
|
6
6
|
gem "em-http-request"
|
7
|
-
gem "mp-deployment", "0.0.21"
|
8
7
|
gem "json"
|
9
|
-
gem "rake"
|
8
|
+
gem "rake", "~> 0.9.2"
|
10
9
|
end
|
11
10
|
|
12
11
|
# Add dependencies to develop your gem here.
|
@@ -20,4 +19,5 @@ group :development do
|
|
20
19
|
gem "rspec"
|
21
20
|
gem "webmock"
|
22
21
|
gem "yard"
|
22
|
+
gem "rdiscount"
|
23
23
|
end
|
data/Gemfile.lock
CHANGED
@@ -5,14 +5,6 @@ GEM
|
|
5
5
|
archive-tar-minitar (0.5.2)
|
6
6
|
async-rack (0.5.1)
|
7
7
|
rack (~> 1.1)
|
8
|
-
capistrano (2.5.21)
|
9
|
-
highline
|
10
|
-
net-scp (>= 1.0.0)
|
11
|
-
net-sftp (>= 2.0.0)
|
12
|
-
net-ssh (>= 2.0.14)
|
13
|
-
net-ssh-gateway (>= 1.0.0)
|
14
|
-
capistrano-ext (1.2.1)
|
15
|
-
capistrano (>= 1.0.0)
|
16
8
|
columnize (0.3.5)
|
17
9
|
crack (0.3.1)
|
18
10
|
diff-lcs (1.1.3)
|
@@ -26,7 +18,6 @@ GEM
|
|
26
18
|
em-synchrony (1.0.0)
|
27
19
|
eventmachine (>= 1.0.0.beta.1)
|
28
20
|
eventmachine (1.0.0.beta.4)
|
29
|
-
facter (1.6.3)
|
30
21
|
git (1.2.5)
|
31
22
|
goliath (0.9.4)
|
32
23
|
async-rack
|
@@ -39,8 +30,6 @@ GEM
|
|
39
30
|
rack (>= 1.2.2)
|
40
31
|
rack-contrib
|
41
32
|
rack-respond_to
|
42
|
-
hashie (1.0.0)
|
43
|
-
highline (1.6.8)
|
44
33
|
http_parser.rb (0.5.3)
|
45
34
|
http_router (0.9.7)
|
46
35
|
rack (>= 1.0.0)
|
@@ -53,23 +42,7 @@ GEM
|
|
53
42
|
linecache19 (0.5.12)
|
54
43
|
ruby_core_source (>= 0.1.4)
|
55
44
|
log4r (1.1.9)
|
56
|
-
mp-deployment (0.0.21)
|
57
|
-
capistrano (~> 2.5.20)
|
58
|
-
capistrano-ext (~> 1.2.1)
|
59
|
-
facter (~> 1.6.0)
|
60
|
-
hashie (~> 1.0.0)
|
61
|
-
newrelic_rpm (~> 3.3.0)
|
62
|
-
rpm_contrib (~> 2.1.3)
|
63
|
-
rvm (~> 1.6.20)
|
64
45
|
multi_json (1.0.3)
|
65
|
-
net-scp (1.0.4)
|
66
|
-
net-ssh (>= 1.99.1)
|
67
|
-
net-sftp (2.0.5)
|
68
|
-
net-ssh (>= 2.0.9)
|
69
|
-
net-ssh (2.2.1)
|
70
|
-
net-ssh-gateway (1.1.0)
|
71
|
-
net-ssh (>= 1.99.1)
|
72
|
-
newrelic_rpm (3.3.0)
|
73
46
|
rack (1.3.5)
|
74
47
|
rack-accept-media-types (0.9)
|
75
48
|
rack-contrib (1.1.0)
|
@@ -78,9 +51,7 @@ GEM
|
|
78
51
|
rack-accept-media-types (>= 0.6)
|
79
52
|
rake (0.9.2.2)
|
80
53
|
rcov (0.9.11)
|
81
|
-
|
82
|
-
newrelic_rpm (>= 3.1.1)
|
83
|
-
newrelic_rpm (>= 3.1.1)
|
54
|
+
rdiscount (1.6.8)
|
84
55
|
rspec (2.7.0)
|
85
56
|
rspec-core (~> 2.7.0)
|
86
57
|
rspec-expectations (~> 2.7.0)
|
@@ -99,7 +70,6 @@ GEM
|
|
99
70
|
ruby-debug-base19 (>= 0.11.19)
|
100
71
|
ruby_core_source (0.1.5)
|
101
72
|
archive-tar-minitar (>= 0.5.2)
|
102
|
-
rvm (1.6.32)
|
103
73
|
shoulda (2.11.3)
|
104
74
|
url_mount (0.2.1)
|
105
75
|
rack
|
@@ -118,9 +88,9 @@ DEPENDENCIES
|
|
118
88
|
goliath
|
119
89
|
jeweler (~> 1.6.4)
|
120
90
|
json
|
121
|
-
|
122
|
-
rake
|
91
|
+
rake (~> 0.9.2)
|
123
92
|
rcov
|
93
|
+
rdiscount
|
124
94
|
rspec
|
125
95
|
ruby-debug19
|
126
96
|
shoulda
|
File without changes
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.1.
|
1
|
+
0.1.1
|
data/lib/adapter.rb
CHANGED
@@ -7,14 +7,18 @@ module Tom
|
|
7
7
|
attr_accessor :host
|
8
8
|
end
|
9
9
|
|
10
|
+
# Registers a route with the request dispatcher
|
11
|
+
# so that this classes subclass gets called when
|
12
|
+
# a request is made. One that matches the route.
|
10
13
|
#
|
11
|
-
#
|
12
|
-
#
|
13
|
-
# a request is made. One that matches the route.
|
14
|
-
#
|
15
|
-
# The route can be a string, but it becomes a
|
16
|
-
# regular expression in here, followed by methods.
|
14
|
+
# The route can be a string, but it becomes a
|
15
|
+
# regular expression in here, followed by methods.
|
17
16
|
#
|
17
|
+
# @param route [String] The route this Adapter should
|
18
|
+
# respond to.
|
19
|
+
# @param methods [Array<Symbol>] Optional array of methods
|
20
|
+
# that this Adapter is listening to. It defaults to
|
21
|
+
# all (`:head`, `:get`, `:put`, `:post`, `:delete`)
|
18
22
|
def self.register_route(*args)
|
19
23
|
route = args[0]
|
20
24
|
methods = args[1..-1]
|
@@ -25,11 +29,12 @@ module Tom
|
|
25
29
|
@request = {}
|
26
30
|
end
|
27
31
|
|
32
|
+
# Takes a request from rack and issues the same
|
33
|
+
# request again, just to a different host. This
|
34
|
+
# method is to be used by subclasses.
|
28
35
|
#
|
29
|
-
#
|
30
|
-
#
|
31
|
-
# method is to be used by subclasses.
|
32
|
-
#
|
36
|
+
# @param env [Array] The incoming (original request)
|
37
|
+
# rack env object
|
33
38
|
def forward_request(env)
|
34
39
|
rewrite_request(env)
|
35
40
|
options = http_request_options(env)
|
@@ -41,14 +46,14 @@ module Tom
|
|
41
46
|
[result.response_header.status, headers, result.response]
|
42
47
|
end
|
43
48
|
|
49
|
+
# Takes a request and generates the options for calling
|
50
|
+
# HttpRequest.put (or whatever the the requested
|
51
|
+
# REQUEST_METHOD is).
|
44
52
|
#
|
45
|
-
#
|
46
|
-
#
|
47
|
-
# REQUEST_METHOD is).
|
48
|
-
#
|
49
|
-
# It's content depends on the request method, for PUTs
|
50
|
-
# and POSTs this will add the request body
|
53
|
+
# It's content depends on the request method, for PUTs
|
54
|
+
# and POSTs this will add the request body
|
51
55
|
#
|
56
|
+
# @param env [Array] A rack env object
|
52
57
|
def http_request_options(env)
|
53
58
|
opts = {}
|
54
59
|
if [:put, :post].include? @request[:method]
|
@@ -57,35 +62,40 @@ module Tom
|
|
57
62
|
opts
|
58
63
|
end
|
59
64
|
|
65
|
+
# Extracts the given POT/PUST (hehe) body
|
60
66
|
#
|
61
|
-
#
|
62
|
-
#
|
67
|
+
# @param env [Array] A rack env object
|
63
68
|
def extract_request_body(env)
|
64
69
|
Rack::Request.new(env).POST.keys.first rescue "{}"
|
65
70
|
end
|
66
71
|
|
72
|
+
# Takes a request from rack and extracts the request
|
73
|
+
# method, uri and returns the host this adapter talks
|
74
|
+
# to. Can be overwritten if you want to change stuff
|
75
|
+
# before forwarding it.
|
67
76
|
#
|
68
|
-
#
|
69
|
-
# method, uri and returns the host this adapter talks
|
70
|
-
# to. Can be overwritten if you want to change stuff
|
71
|
-
# before forwarding it.
|
72
|
-
#
|
77
|
+
# @param env [Array] A rack env object
|
73
78
|
def rewrite_request(env)
|
74
79
|
rewritten = rewrite_host(env)
|
75
80
|
@request = rewritten.merge(@request)
|
76
81
|
end
|
77
82
|
|
83
|
+
# Subclasses must implement this method to handle incoming
|
84
|
+
# requests
|
85
|
+
#
|
86
|
+
# @param env [Array] The incoming (original request)
|
87
|
+
# rack env object
|
78
88
|
def handle(env)
|
79
89
|
raise "Subclass, implement #handle(env)!"
|
80
90
|
end
|
81
91
|
|
82
92
|
private
|
83
93
|
|
94
|
+
# Returns a hash that can be used as the @request variable,
|
95
|
+
# which is exactly like the given env except for a changed
|
96
|
+
# hostname.
|
84
97
|
#
|
85
|
-
#
|
86
|
-
# which is exactly like the given env except for a changed
|
87
|
-
# hostname.
|
88
|
-
#
|
98
|
+
# @param env [Array] A rack env object
|
89
99
|
def rewrite_host(env)
|
90
100
|
{ host: self.class.host,
|
91
101
|
uri: env["REQUEST_URI"],
|
data/lib/dispatcher.rb
CHANGED
@@ -13,11 +13,12 @@ module Tom
|
|
13
13
|
|
14
14
|
class Dispatcher
|
15
15
|
|
16
|
+
# Dispatches this request to all adapters that registered
|
17
|
+
# for the route and then calls the merger for this route
|
18
|
+
# to compose a response
|
16
19
|
#
|
17
|
-
#
|
18
|
-
#
|
19
|
-
# to compose a response
|
20
|
-
#
|
20
|
+
# @param env [Array] A rack env object
|
21
|
+
# @return (see #merge)
|
21
22
|
def self.dispatch(env)
|
22
23
|
adapters = adapters_for_route(env)
|
23
24
|
return [404, {}, '{reason: "No adapters for this route"}'] if adapters.empty?
|
@@ -36,13 +37,16 @@ module Tom
|
|
36
37
|
merged
|
37
38
|
end
|
38
39
|
|
40
|
+
# Takes a request (rack env) and a couple of responses
|
41
|
+
# generated by api adapters and composes a response for the
|
42
|
+
# client.
|
39
43
|
#
|
40
|
-
#
|
41
|
-
# generated by api adapters and composes a response for the
|
42
|
-
# client.
|
43
|
-
#
|
44
|
-
# The merger used depends on the route.
|
44
|
+
# The merger used depends on the route.
|
45
45
|
#
|
46
|
+
# @param env [Array] A rack env object
|
47
|
+
# @return [Array] The merged result of all requests
|
48
|
+
# made as an array of status code, headers and body, e.g.
|
49
|
+
# `[200, {}, "Hi!"]`
|
46
50
|
def self.merge(env, responses)
|
47
51
|
merger = merger_for_route(env)
|
48
52
|
Tom::LOG.info "Merging with:"
|
@@ -50,13 +54,17 @@ module Tom
|
|
50
54
|
merger.new.merge env, responses
|
51
55
|
end
|
52
56
|
|
57
|
+
# Registers a opts[:adapter] or opts[:merger] for the
|
58
|
+
# given opts[:route].
|
53
59
|
#
|
54
|
-
#
|
55
|
-
#
|
56
|
-
#
|
57
|
-
# This method should not be called directly, use register_route
|
58
|
-
# in Tom::Adapter or Tom::Merger instead.
|
60
|
+
# This method should not be called directly, use register_route
|
61
|
+
# in Tom::Adapter or Tom::Merger instead.
|
59
62
|
#
|
63
|
+
# @param opts [Hash] Needs to have at least `:route` and
|
64
|
+
# either `:adapter` or `:merger` set, depending on what you
|
65
|
+
# are registering. But you don't need to use this method
|
66
|
+
# directly, Adapter and Merger provide convenience methods
|
67
|
+
# for you.
|
60
68
|
def self.register(opts)
|
61
69
|
return register_adapter(opts) if opts[:adapter]
|
62
70
|
return register_merger(opts) if opts[:merger]
|
data/lib/http.rb
CHANGED
@@ -1,12 +1,16 @@
|
|
1
1
|
module Tom
|
2
2
|
module Http
|
3
3
|
|
4
|
+
# Makes a http request of the given method to the given url.
|
5
|
+
# Passes the options on to EM::HttpRequest.put (or whatever
|
6
|
+
# method has to be called) and does some error handling and
|
7
|
+
# works around some EM:HttpRequest oddities (see handle_errors).
|
4
8
|
#
|
5
|
-
#
|
6
|
-
#
|
7
|
-
#
|
8
|
-
#
|
9
|
-
#
|
9
|
+
# @param method [Symbol] Request method, lowercase, you know
|
10
|
+
# the deal
|
11
|
+
# @param url [String] Full url (e.g. host + path)
|
12
|
+
# @param options [Hash] Options to pass to EM::HttpRequest's
|
13
|
+
# get/put/post/delete method
|
10
14
|
def self.make_request(method, url, options = {})
|
11
15
|
Tom::LOG.info " curl -X#{method.upcase} -d '#{options[:body]}' #{url}"
|
12
16
|
|
data/lib/merger.rb
CHANGED
@@ -1,32 +1,37 @@
|
|
1
1
|
module Tom
|
2
2
|
class Merger
|
3
3
|
|
4
|
+
# Registers a route with the request dispatcher
|
5
|
+
# so that this classes subclass gets called when
|
6
|
+
# a request is made. One that matches the route.
|
4
7
|
#
|
5
|
-
#
|
6
|
-
#
|
7
|
-
#
|
8
|
-
#
|
9
|
-
# The route can be a string, but it becomes a
|
10
|
-
# regular expression in here. When matching in
|
11
|
-
# order to find a merger for a request, the first
|
12
|
-
# one matching wins.
|
8
|
+
# The route can be a string, but it becomes a
|
9
|
+
# regular expression in here. When matching in
|
10
|
+
# order to find a merger for a request, the first
|
11
|
+
# one matching wins.
|
13
12
|
#
|
13
|
+
# @param route [String] The route this Merger should
|
14
|
+
# respond to.
|
15
|
+
# @param methods [Array<Symbol>] Optional array of methods
|
16
|
+
# that this Merger is listening to. It defaults to
|
17
|
+
# all (`:head`, `:get`, `:put`, `:post`, `:delete`)
|
14
18
|
def self.register_route(*args)
|
15
19
|
route = args[0]
|
16
20
|
methods = args[1..-1]
|
17
21
|
Dispatcher.register(route: /#{route}/, merger: self, methods: methods)
|
18
22
|
end
|
19
23
|
|
24
|
+
# When the request dispatcher made all the requests,
|
25
|
+
# it will call the merge method of the subclass with
|
26
|
+
# the responses as a hash in the form
|
20
27
|
#
|
21
|
-
#
|
22
|
-
#
|
23
|
-
#
|
24
|
-
#
|
25
|
-
#
|
26
|
-
#
|
27
|
-
#
|
28
|
-
# like [200, {}, "body"])
|
29
|
-
#
|
28
|
+
# @param env [Array] The incoming (original request)
|
29
|
+
# rack env object
|
30
|
+
# @param responses [Hash] Replies from all Adapters that
|
31
|
+
# got triggered by route and method, e.g.
|
32
|
+
# `{MyAdapter: rack_env, MyOtherAdapter: other_env}`
|
33
|
+
# @return [Array] A rack response (for example, something
|
34
|
+
# like [200, {}, "body"])
|
30
35
|
def merge(env, responses)
|
31
36
|
raise "Subclass, implement #merge(env, responses)!"
|
32
37
|
end
|
data/tom.gemspec
CHANGED
@@ -5,16 +5,16 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = "tom"
|
8
|
-
s.version = "0.1.
|
8
|
+
s.version = "0.1.1"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Jannis Hermanns"]
|
12
|
-
s.date = "2011-12-
|
12
|
+
s.date = "2011-12-03"
|
13
13
|
s.description = " Tom uses Goliath to dispatch HTTP requests to multiple other APIs (via Adapters) in parallel. In a next step, a Merger merges the result and responds to the clients request."
|
14
14
|
s.email = "jannis@gmail.com"
|
15
15
|
s.extra_rdoc_files = [
|
16
16
|
"LICENSE.txt",
|
17
|
-
"README.
|
17
|
+
"README.md"
|
18
18
|
]
|
19
19
|
s.files = [
|
20
20
|
".document",
|
@@ -22,7 +22,7 @@ Gem::Specification.new do |s|
|
|
22
22
|
"Gemfile",
|
23
23
|
"Gemfile.lock",
|
24
24
|
"LICENSE.txt",
|
25
|
-
"README.
|
25
|
+
"README.md",
|
26
26
|
"Rakefile",
|
27
27
|
"VERSION",
|
28
28
|
"lib/adapter.rb",
|
@@ -49,9 +49,8 @@ Gem::Specification.new do |s|
|
|
49
49
|
s.add_runtime_dependency(%q<goliath>, [">= 0"])
|
50
50
|
s.add_runtime_dependency(%q<em-synchrony>, [">= 0"])
|
51
51
|
s.add_runtime_dependency(%q<em-http-request>, [">= 0"])
|
52
|
-
s.add_runtime_dependency(%q<mp-deployment>, ["= 0.0.21"])
|
53
52
|
s.add_runtime_dependency(%q<json>, [">= 0"])
|
54
|
-
s.add_runtime_dependency(%q<rake>, ["
|
53
|
+
s.add_runtime_dependency(%q<rake>, ["~> 0.9.2"])
|
55
54
|
s.add_development_dependency(%q<bundler>, ["~> 1.0.0"])
|
56
55
|
s.add_development_dependency(%q<jeweler>, ["~> 1.6.4"])
|
57
56
|
s.add_development_dependency(%q<shoulda>, [">= 0"])
|
@@ -60,13 +59,13 @@ Gem::Specification.new do |s|
|
|
60
59
|
s.add_development_dependency(%q<rspec>, [">= 0"])
|
61
60
|
s.add_development_dependency(%q<webmock>, [">= 0"])
|
62
61
|
s.add_development_dependency(%q<yard>, [">= 0"])
|
62
|
+
s.add_development_dependency(%q<rdiscount>, [">= 0"])
|
63
63
|
else
|
64
64
|
s.add_dependency(%q<goliath>, [">= 0"])
|
65
65
|
s.add_dependency(%q<em-synchrony>, [">= 0"])
|
66
66
|
s.add_dependency(%q<em-http-request>, [">= 0"])
|
67
|
-
s.add_dependency(%q<mp-deployment>, ["= 0.0.21"])
|
68
67
|
s.add_dependency(%q<json>, [">= 0"])
|
69
|
-
s.add_dependency(%q<rake>, ["
|
68
|
+
s.add_dependency(%q<rake>, ["~> 0.9.2"])
|
70
69
|
s.add_dependency(%q<bundler>, ["~> 1.0.0"])
|
71
70
|
s.add_dependency(%q<jeweler>, ["~> 1.6.4"])
|
72
71
|
s.add_dependency(%q<shoulda>, [">= 0"])
|
@@ -75,14 +74,14 @@ Gem::Specification.new do |s|
|
|
75
74
|
s.add_dependency(%q<rspec>, [">= 0"])
|
76
75
|
s.add_dependency(%q<webmock>, [">= 0"])
|
77
76
|
s.add_dependency(%q<yard>, [">= 0"])
|
77
|
+
s.add_dependency(%q<rdiscount>, [">= 0"])
|
78
78
|
end
|
79
79
|
else
|
80
80
|
s.add_dependency(%q<goliath>, [">= 0"])
|
81
81
|
s.add_dependency(%q<em-synchrony>, [">= 0"])
|
82
82
|
s.add_dependency(%q<em-http-request>, [">= 0"])
|
83
|
-
s.add_dependency(%q<mp-deployment>, ["= 0.0.21"])
|
84
83
|
s.add_dependency(%q<json>, [">= 0"])
|
85
|
-
s.add_dependency(%q<rake>, ["
|
84
|
+
s.add_dependency(%q<rake>, ["~> 0.9.2"])
|
86
85
|
s.add_dependency(%q<bundler>, ["~> 1.0.0"])
|
87
86
|
s.add_dependency(%q<jeweler>, ["~> 1.6.4"])
|
88
87
|
s.add_dependency(%q<shoulda>, [">= 0"])
|
@@ -91,6 +90,7 @@ Gem::Specification.new do |s|
|
|
91
90
|
s.add_dependency(%q<rspec>, [">= 0"])
|
92
91
|
s.add_dependency(%q<webmock>, [">= 0"])
|
93
92
|
s.add_dependency(%q<yard>, [">= 0"])
|
93
|
+
s.add_dependency(%q<rdiscount>, [">= 0"])
|
94
94
|
end
|
95
95
|
end
|
96
96
|
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: tom
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.1
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,11 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2011-12-
|
12
|
+
date: 2011-12-03 00:00:00.000000000Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: goliath
|
16
|
-
requirement: &
|
16
|
+
requirement: &70331478259800 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ! '>='
|
@@ -21,10 +21,10 @@ dependencies:
|
|
21
21
|
version: '0'
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *70331478259800
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: em-synchrony
|
27
|
-
requirement: &
|
27
|
+
requirement: &70331478259160 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ! '>='
|
@@ -32,10 +32,10 @@ dependencies:
|
|
32
32
|
version: '0'
|
33
33
|
type: :runtime
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *70331478259160
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: em-http-request
|
38
|
-
requirement: &
|
38
|
+
requirement: &70331478258580 !ruby/object:Gem::Requirement
|
39
39
|
none: false
|
40
40
|
requirements:
|
41
41
|
- - ! '>='
|
@@ -43,21 +43,10 @@ dependencies:
|
|
43
43
|
version: '0'
|
44
44
|
type: :runtime
|
45
45
|
prerelease: false
|
46
|
-
version_requirements: *
|
47
|
-
- !ruby/object:Gem::Dependency
|
48
|
-
name: mp-deployment
|
49
|
-
requirement: &70256849152280 !ruby/object:Gem::Requirement
|
50
|
-
none: false
|
51
|
-
requirements:
|
52
|
-
- - =
|
53
|
-
- !ruby/object:Gem::Version
|
54
|
-
version: 0.0.21
|
55
|
-
type: :runtime
|
56
|
-
prerelease: false
|
57
|
-
version_requirements: *70256849152280
|
46
|
+
version_requirements: *70331478258580
|
58
47
|
- !ruby/object:Gem::Dependency
|
59
48
|
name: json
|
60
|
-
requirement: &
|
49
|
+
requirement: &70331478258020 !ruby/object:Gem::Requirement
|
61
50
|
none: false
|
62
51
|
requirements:
|
63
52
|
- - ! '>='
|
@@ -65,21 +54,21 @@ dependencies:
|
|
65
54
|
version: '0'
|
66
55
|
type: :runtime
|
67
56
|
prerelease: false
|
68
|
-
version_requirements: *
|
57
|
+
version_requirements: *70331478258020
|
69
58
|
- !ruby/object:Gem::Dependency
|
70
59
|
name: rake
|
71
|
-
requirement: &
|
60
|
+
requirement: &70331478257520 !ruby/object:Gem::Requirement
|
72
61
|
none: false
|
73
62
|
requirements:
|
74
|
-
- -
|
63
|
+
- - ~>
|
75
64
|
- !ruby/object:Gem::Version
|
76
|
-
version:
|
65
|
+
version: 0.9.2
|
77
66
|
type: :runtime
|
78
67
|
prerelease: false
|
79
|
-
version_requirements: *
|
68
|
+
version_requirements: *70331478257520
|
80
69
|
- !ruby/object:Gem::Dependency
|
81
70
|
name: bundler
|
82
|
-
requirement: &
|
71
|
+
requirement: &70331478257040 !ruby/object:Gem::Requirement
|
83
72
|
none: false
|
84
73
|
requirements:
|
85
74
|
- - ~>
|
@@ -87,10 +76,10 @@ dependencies:
|
|
87
76
|
version: 1.0.0
|
88
77
|
type: :development
|
89
78
|
prerelease: false
|
90
|
-
version_requirements: *
|
79
|
+
version_requirements: *70331478257040
|
91
80
|
- !ruby/object:Gem::Dependency
|
92
81
|
name: jeweler
|
93
|
-
requirement: &
|
82
|
+
requirement: &70331478256480 !ruby/object:Gem::Requirement
|
94
83
|
none: false
|
95
84
|
requirements:
|
96
85
|
- - ~>
|
@@ -98,10 +87,10 @@ dependencies:
|
|
98
87
|
version: 1.6.4
|
99
88
|
type: :development
|
100
89
|
prerelease: false
|
101
|
-
version_requirements: *
|
90
|
+
version_requirements: *70331478256480
|
102
91
|
- !ruby/object:Gem::Dependency
|
103
92
|
name: shoulda
|
104
|
-
requirement: &
|
93
|
+
requirement: &70331478255940 !ruby/object:Gem::Requirement
|
105
94
|
none: false
|
106
95
|
requirements:
|
107
96
|
- - ! '>='
|
@@ -109,10 +98,10 @@ dependencies:
|
|
109
98
|
version: '0'
|
110
99
|
type: :development
|
111
100
|
prerelease: false
|
112
|
-
version_requirements: *
|
101
|
+
version_requirements: *70331478255940
|
113
102
|
- !ruby/object:Gem::Dependency
|
114
103
|
name: rcov
|
115
|
-
requirement: &
|
104
|
+
requirement: &70331478255420 !ruby/object:Gem::Requirement
|
116
105
|
none: false
|
117
106
|
requirements:
|
118
107
|
- - ! '>='
|
@@ -120,10 +109,10 @@ dependencies:
|
|
120
109
|
version: '0'
|
121
110
|
type: :development
|
122
111
|
prerelease: false
|
123
|
-
version_requirements: *
|
112
|
+
version_requirements: *70331478255420
|
124
113
|
- !ruby/object:Gem::Dependency
|
125
114
|
name: ruby-debug19
|
126
|
-
requirement: &
|
115
|
+
requirement: &70331478254880 !ruby/object:Gem::Requirement
|
127
116
|
none: false
|
128
117
|
requirements:
|
129
118
|
- - ! '>='
|
@@ -131,10 +120,10 @@ dependencies:
|
|
131
120
|
version: '0'
|
132
121
|
type: :development
|
133
122
|
prerelease: false
|
134
|
-
version_requirements: *
|
123
|
+
version_requirements: *70331478254880
|
135
124
|
- !ruby/object:Gem::Dependency
|
136
125
|
name: rspec
|
137
|
-
requirement: &
|
126
|
+
requirement: &70331478254360 !ruby/object:Gem::Requirement
|
138
127
|
none: false
|
139
128
|
requirements:
|
140
129
|
- - ! '>='
|
@@ -142,10 +131,10 @@ dependencies:
|
|
142
131
|
version: '0'
|
143
132
|
type: :development
|
144
133
|
prerelease: false
|
145
|
-
version_requirements: *
|
134
|
+
version_requirements: *70331478254360
|
146
135
|
- !ruby/object:Gem::Dependency
|
147
136
|
name: webmock
|
148
|
-
requirement: &
|
137
|
+
requirement: &70331478253820 !ruby/object:Gem::Requirement
|
149
138
|
none: false
|
150
139
|
requirements:
|
151
140
|
- - ! '>='
|
@@ -153,10 +142,21 @@ dependencies:
|
|
153
142
|
version: '0'
|
154
143
|
type: :development
|
155
144
|
prerelease: false
|
156
|
-
version_requirements: *
|
145
|
+
version_requirements: *70331478253820
|
157
146
|
- !ruby/object:Gem::Dependency
|
158
147
|
name: yard
|
159
|
-
requirement: &
|
148
|
+
requirement: &70331478253300 !ruby/object:Gem::Requirement
|
149
|
+
none: false
|
150
|
+
requirements:
|
151
|
+
- - ! '>='
|
152
|
+
- !ruby/object:Gem::Version
|
153
|
+
version: '0'
|
154
|
+
type: :development
|
155
|
+
prerelease: false
|
156
|
+
version_requirements: *70331478253300
|
157
|
+
- !ruby/object:Gem::Dependency
|
158
|
+
name: rdiscount
|
159
|
+
requirement: &70331478252780 !ruby/object:Gem::Requirement
|
160
160
|
none: false
|
161
161
|
requirements:
|
162
162
|
- - ! '>='
|
@@ -164,7 +164,7 @@ dependencies:
|
|
164
164
|
version: '0'
|
165
165
|
type: :development
|
166
166
|
prerelease: false
|
167
|
-
version_requirements: *
|
167
|
+
version_requirements: *70331478252780
|
168
168
|
description: ! ' Tom uses Goliath to dispatch HTTP requests to multiple other APIs
|
169
169
|
(via Adapters) in parallel. In a next step, a Merger merges the result and responds
|
170
170
|
to the clients request.'
|
@@ -173,14 +173,14 @@ executables: []
|
|
173
173
|
extensions: []
|
174
174
|
extra_rdoc_files:
|
175
175
|
- LICENSE.txt
|
176
|
-
- README.
|
176
|
+
- README.md
|
177
177
|
files:
|
178
178
|
- .document
|
179
179
|
- .rvmrc
|
180
180
|
- Gemfile
|
181
181
|
- Gemfile.lock
|
182
182
|
- LICENSE.txt
|
183
|
-
- README.
|
183
|
+
- README.md
|
184
184
|
- Rakefile
|
185
185
|
- VERSION
|
186
186
|
- lib/adapter.rb
|
@@ -208,7 +208,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
208
208
|
version: '0'
|
209
209
|
segments:
|
210
210
|
- 0
|
211
|
-
hash:
|
211
|
+
hash: 480202980293159198
|
212
212
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
213
213
|
none: false
|
214
214
|
requirements:
|