tom 0.1.0 → 0.1.1

Sign up to get free protection for your applications and to get access to all the features.
data/.rvmrc CHANGED
@@ -1 +1 @@
1
- rvm --create use ruby-1.9.2-p290@leonard
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
@@ -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
- rpm_contrib (2.1.6)
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
- mp-deployment (= 0.0.21)
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.0
1
+ 0.1.1
@@ -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
- # Registers a route with the request dispatcher
12
- # so that this classes subclass gets called when
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
- # Takes a request from rack and issues the same
30
- # request again, just to a different host. This
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
- # Takes a request and generates the options for calling
46
- # HttpRequest.put (or whatever the the requested
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
- # Extracts the given POT/PUST (hehe) body
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
- # Takes a request from rack and extracts the request
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
- # Returns a hash that can be used as the @request variable,
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"],
@@ -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
- # Dispatches this request to all adapters that registered
18
- # for the route and then calls the merger for this route
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
- # Takes a request (rack env) and a couple of responses
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
- # Registers a opts[:adapter] or opts[:merger] for the
55
- # given opts[:route].
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]
@@ -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
- # Makes a http request of the given method to the given url.
6
- # Passes the options on to EM::HttpRequest.put (or whatever
7
- # method has to be called) and does some error handling and
8
- # works around some EM:HttpRequest oddities (see handle_errors).
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
 
@@ -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
- # Registers a route with the request dispatcher
6
- # so that this classes subclass gets called when
7
- # a request is made. One that matches the route.
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
- # When the request dispatcher made all the requests,
22
- # it will call the merge method of the subclass with
23
- # the responses as a hash in the form
24
- #
25
- # {MyAdapter: rack_env, MyOtherAdapter: other_env}
26
- #
27
- # Has to return a rack response (for example, something
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
@@ -5,16 +5,16 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = "tom"
8
- s.version = "0.1.0"
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-02"
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.markdown"
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.markdown",
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>, [">= 0"])
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>, [">= 0"])
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>, [">= 0"])
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.0
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-02 00:00:00.000000000Z
12
+ date: 2011-12-03 00:00:00.000000000Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: goliath
16
- requirement: &70256849153920 !ruby/object:Gem::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: *70256849153920
24
+ version_requirements: *70331478259800
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: em-synchrony
27
- requirement: &70256849153340 !ruby/object:Gem::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: *70256849153340
35
+ version_requirements: *70331478259160
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: em-http-request
38
- requirement: &70256849152840 !ruby/object:Gem::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: *70256849152840
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: &70256849151680 !ruby/object:Gem::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: *70256849151680
57
+ version_requirements: *70331478258020
69
58
  - !ruby/object:Gem::Dependency
70
59
  name: rake
71
- requirement: &70256849151080 !ruby/object:Gem::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: '0'
65
+ version: 0.9.2
77
66
  type: :runtime
78
67
  prerelease: false
79
- version_requirements: *70256849151080
68
+ version_requirements: *70331478257520
80
69
  - !ruby/object:Gem::Dependency
81
70
  name: bundler
82
- requirement: &70256849150560 !ruby/object:Gem::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: *70256849150560
79
+ version_requirements: *70331478257040
91
80
  - !ruby/object:Gem::Dependency
92
81
  name: jeweler
93
- requirement: &70256849150000 !ruby/object:Gem::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: *70256849150000
90
+ version_requirements: *70331478256480
102
91
  - !ruby/object:Gem::Dependency
103
92
  name: shoulda
104
- requirement: &70256849149420 !ruby/object:Gem::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: *70256849149420
101
+ version_requirements: *70331478255940
113
102
  - !ruby/object:Gem::Dependency
114
103
  name: rcov
115
- requirement: &70256849148740 !ruby/object:Gem::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: *70256849148740
112
+ version_requirements: *70331478255420
124
113
  - !ruby/object:Gem::Dependency
125
114
  name: ruby-debug19
126
- requirement: &70256849148120 !ruby/object:Gem::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: *70256849148120
123
+ version_requirements: *70331478254880
135
124
  - !ruby/object:Gem::Dependency
136
125
  name: rspec
137
- requirement: &70256849147600 !ruby/object:Gem::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: *70256849147600
134
+ version_requirements: *70331478254360
146
135
  - !ruby/object:Gem::Dependency
147
136
  name: webmock
148
- requirement: &70256849147020 !ruby/object:Gem::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: *70256849147020
145
+ version_requirements: *70331478253820
157
146
  - !ruby/object:Gem::Dependency
158
147
  name: yard
159
- requirement: &70256849146400 !ruby/object:Gem::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: *70256849146400
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.markdown
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.markdown
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: -4016356889838983520
211
+ hash: 480202980293159198
212
212
  required_rubygems_version: !ruby/object:Gem::Requirement
213
213
  none: false
214
214
  requirements: