goliath 1.0.3 → 1.0.4

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of goliath might be problematic. Click here for more details.

Files changed (37) hide show
  1. checksums.yaml +7 -0
  2. data/examples/api_proxy.rb +2 -0
  3. data/examples/around.rb +38 -0
  4. data/examples/clone.rb +26 -0
  5. data/examples/router.rb +15 -0
  6. data/examples/test.rb +31 -0
  7. data/examples/upload.rb +17 -0
  8. data/goliath.gemspec +4 -3
  9. data/lib/goliath/api.rb +5 -2
  10. data/lib/goliath/connection.rb +1 -1
  11. data/lib/goliath/rack/params.rb +13 -14
  12. data/lib/goliath/rack/validation/param.rb +3 -3
  13. data/lib/goliath/request.rb +11 -11
  14. data/lib/goliath/server.rb +0 -1
  15. data/lib/goliath/version.rb +1 -1
  16. data/spec/integration/http_log_spec.rb +1 -1
  17. data/spec/integration/websocket_spec.rb +1 -1
  18. data/spec/unit/connection_spec.rb +7 -7
  19. data/spec/unit/rack/default_mime_type_spec.rb +3 -3
  20. data/spec/unit/rack/formatters/json_spec.rb +2 -2
  21. data/spec/unit/rack/formatters/plist_spec.rb +1 -1
  22. data/spec/unit/rack/formatters/xml_spec.rb +2 -2
  23. data/spec/unit/rack/formatters/yaml_spec.rb +2 -2
  24. data/spec/unit/rack/heartbeat_spec.rb +2 -2
  25. data/spec/unit/rack/params_spec.rb +8 -1
  26. data/spec/unit/rack/render_spec.rb +1 -1
  27. data/spec/unit/rack/validation/boolean_value_spec.rb +2 -2
  28. data/spec/unit/rack/validation/default_params_spec.rb +1 -1
  29. data/spec/unit/rack/validation/numeric_range_spec.rb +1 -1
  30. data/spec/unit/rack/validation/param_spec.rb +4 -4
  31. data/spec/unit/rack/validation/request_method_spec.rb +4 -4
  32. data/spec/unit/rack/validation/required_param_spec.rb +3 -3
  33. data/spec/unit/rack/validation/required_value_spec.rb +1 -1
  34. data/spec/unit/request_spec.rb +15 -6
  35. data/spec/unit/runner_spec.rb +14 -14
  36. data/spec/unit/server_spec.rb +11 -23
  37. metadata +82 -123
@@ -8,7 +8,7 @@ describe Goliath::Rack::Formatters::YAML do
8
8
 
9
9
  describe 'with a formatter' do
10
10
  before(:each) do
11
- @app = mock('app').as_null_object
11
+ @app = double('app').as_null_object
12
12
  @ym = Goliath::Rack::Formatters::YAML.new(@app)
13
13
  end
14
14
 
@@ -21,7 +21,7 @@ describe Goliath::Rack::Formatters::YAML do
21
21
  end
22
22
 
23
23
  it 'calls the app with the provided environment' do
24
- env_mock = mock('env').as_null_object
24
+ env_mock = double('env').as_null_object
25
25
  @app.should_receive(:call).with(env_mock).and_return([200, {}, {"a" => 1}])
26
26
  @ym.call(env_mock)
27
27
  end
@@ -9,9 +9,9 @@ describe Goliath::Rack::Heartbeat do
9
9
 
10
10
  describe 'with the middleware' do
11
11
  before(:each) do
12
- @app = mock('app').as_null_object
12
+ @app = double('app').as_null_object
13
13
  @env = Goliath::Env.new
14
- @env['status'] = mock('status').as_null_object
14
+ @env['status'] = double('status').as_null_object
15
15
  @hb = Goliath::Rack::Heartbeat.new(@app)
16
16
  end
17
17
 
@@ -8,12 +8,19 @@ describe Goliath::Rack::Params do
8
8
 
9
9
  describe 'with middleware' do
10
10
  before(:each) do
11
- @app = mock('app').as_null_object
11
+ @app = double('app').as_null_object
12
12
  @env = {}
13
13
  @env['CONTENT_TYPE'] = 'application/x-www-form-urlencoded; charset=utf-8'
14
14
  @params = Goliath::Rack::Params.new(@app)
15
15
  end
16
16
 
17
+ it 'handles invalid query strings' do
18
+ @env['QUERY_STRING'] = 'bad=%3N'
19
+ expect {
20
+ @params.retrieve_params(@env)
21
+ }.to raise_error(Goliath::Validation::BadRequestError)
22
+ end
23
+
17
24
  it 'parses the query string' do
18
25
  @env['QUERY_STRING'] = 'foo=bar&baz=bonkey'
19
26
 
@@ -9,7 +9,7 @@ describe Goliath::Rack::Render do
9
9
  env
10
10
  end
11
11
 
12
- let(:app) { mock('app').as_null_object }
12
+ let(:app) { double('app').as_null_object }
13
13
  let(:render) { Goliath::Rack::Render.new(app) }
14
14
 
15
15
  it 'accepts an app' do
@@ -3,7 +3,7 @@ require 'goliath/rack/validation/boolean_value'
3
3
 
4
4
  describe Goliath::Rack::Validation::BooleanValue do
5
5
  before(:each) do
6
- @app = mock('app').as_null_object
6
+ @app = double('app').as_null_object
7
7
  @env = {'params' => {}}
8
8
  end
9
9
 
@@ -51,4 +51,4 @@ describe Goliath::Rack::Validation::BooleanValue do
51
51
  end
52
52
  end
53
53
  end
54
- end
54
+ end
@@ -17,7 +17,7 @@ describe Goliath::Rack::Validation::DefaultParams do
17
17
 
18
18
  describe 'with middleware' do
19
19
  before(:each) do
20
- @app = mock('app').as_null_object
20
+ @app = double('app').as_null_object
21
21
  @env = {'params' => {}}
22
22
  @rf = Goliath::Rack::Validation::DefaultParams.new(@app, {:key => 'fl', :defaults => ['title', 'link']})
23
23
  end
@@ -3,7 +3,7 @@ require 'goliath/rack/validation/numeric_range'
3
3
 
4
4
  describe Goliath::Rack::Validation::NumericRange do
5
5
  before(:each) do
6
- @app = mock('app').as_null_object
6
+ @app = double('app').as_null_object
7
7
  @env = {'params' => {}}
8
8
  end
9
9
 
@@ -3,7 +3,7 @@ require 'goliath/rack/validation/param'
3
3
 
4
4
  describe Goliath::Rack::Validation::Param do
5
5
  before do
6
- @app = mock('app').as_null_object
6
+ @app = double('app').as_null_object
7
7
  @env = {'params' => {}}
8
8
  end
9
9
 
@@ -96,7 +96,7 @@ describe Goliath::Rack::Validation::Param do
96
96
 
97
97
  context 'with middleware' do
98
98
  before(:each) do
99
- @app = mock('app').as_null_object
99
+ @app = double('app').as_null_object
100
100
  @env = {'params' => {}}
101
101
  @rp = Goliath::Rack::Validation::Param.new(@app, {:type => 'Monkey',
102
102
  :key => 'mk', :message => 'is required'})
@@ -179,7 +179,7 @@ describe Goliath::Rack::Validation::Param do
179
179
 
180
180
  context 'Nested keys tests' do
181
181
  before do
182
- @app = mock('app').as_null_object
182
+ @app = double('app').as_null_object
183
183
  @env = {'params' => {}}
184
184
  @rp = Goliath::Rack::Validation::Param.new(@app, :type => 'Monkey',
185
185
  :key => ['data', 'credentials', 'login'],
@@ -211,7 +211,7 @@ describe Goliath::Rack::Validation::Param do
211
211
 
212
212
  context 'Nested keys tests (with string)' do
213
213
  before do
214
- @app = mock('app').as_null_object
214
+ @app = double('app').as_null_object
215
215
  @env = {'params' => {}}
216
216
  @rp = Goliath::Rack::Validation::Param.new(@app, :type => 'Monkey',
217
217
  :key => 'data.credentials.login', :message => 'is required')
@@ -6,8 +6,8 @@ describe Goliath::Rack::Validation::RequestMethod do
6
6
  @app_headers = {'Content-Type' => 'asdf'}
7
7
  @app_body = {'a' => 'b'}
8
8
 
9
- @app = mock('app').as_null_object
10
- @app.stub!(:call).and_return([200, @app_headers, @app_body])
9
+ @app = double('app').as_null_object
10
+ @app.stub(:call).and_return([200, @app_headers, @app_body])
11
11
  end
12
12
 
13
13
  it 'accepts an app' do
@@ -44,9 +44,9 @@ describe Goliath::Rack::Validation::RequestMethod do
44
44
  rm = Goliath::Rack::Validation::RequestMethod.new('my app', ['GET', 'DELETE', 'HEAD'])
45
45
  rm.methods.should == ['GET', 'DELETE', 'HEAD']
46
46
  end
47
-
47
+
48
48
  it 'accepts string method on initialize' do
49
49
  rm = Goliath::Rack::Validation::RequestMethod.new('my app', 'GET')
50
50
  rm.methods.should == ['GET']
51
51
  end
52
- end
52
+ end
@@ -24,7 +24,7 @@ describe Goliath::Rack::Validation::RequiredParam do
24
24
 
25
25
  describe 'with middleware' do
26
26
  before(:each) do
27
- @app = mock('app').as_null_object
27
+ @app = double('app').as_null_object
28
28
  @env = {'params' => {}}
29
29
  @rp = Goliath::Rack::Validation::RequiredParam.new(@app, {:type => 'Monkey', :key => 'mk', :message => 'is required'})
30
30
  end
@@ -106,7 +106,7 @@ describe Goliath::Rack::Validation::RequiredParam do
106
106
 
107
107
  describe 'Nested keys tests' do
108
108
  before do
109
- @app = mock('app').as_null_object
109
+ @app = double('app').as_null_object
110
110
  @env = {'params' => {}}
111
111
  @rp = Goliath::Rack::Validation::RequiredParam.new(@app,
112
112
  :type => 'Monkey',
@@ -140,7 +140,7 @@ describe Goliath::Rack::Validation::RequiredParam do
140
140
 
141
141
  describe 'Nested keys tests (with string)' do
142
142
  before do
143
- @app = mock('app').as_null_object
143
+ @app = double('app').as_null_object
144
144
  @env = {'params' => {}}
145
145
  @rp = Goliath::Rack::Validation::RequiredParam.new(@app,
146
146
  :type => 'Monkey',
@@ -19,7 +19,7 @@ describe Goliath::Rack::Validation::RequiredValue do
19
19
 
20
20
  describe 'with middleware' do
21
21
  before(:each) do
22
- @app = mock('app').as_null_object
22
+ @app = double('app').as_null_object
23
23
  @env = {'params' => {}}
24
24
  @rv = Goliath::Rack::Validation::RequiredValue.new(@app, {:values => ['Monkey', 'frog'], :key => 'mk'})
25
25
  end
@@ -2,7 +2,7 @@ require 'spec_helper'
2
2
 
3
3
  describe Goliath::Request do
4
4
  before(:each) do
5
- app = mock('app').as_null_object
5
+ app = double('app').as_null_object
6
6
  env = Goliath::Env.new
7
7
 
8
8
  @r = Goliath::Request.new(app, nil, env)
@@ -28,8 +28,8 @@ describe Goliath::Request do
28
28
 
29
29
  describe 'process' do
30
30
  it 'executes the application' do
31
- app_mock = mock('app').as_null_object
32
- env_mock = mock('app').as_null_object
31
+ app_mock = double('app').as_null_object
32
+ env_mock = double('app').as_null_object
33
33
  request = Goliath::Request.new(app_mock, nil, env_mock)
34
34
 
35
35
  app_mock.should_receive(:call).with(request.env)
@@ -54,15 +54,24 @@ describe Goliath::Request do
54
54
 
55
55
  describe 'parse_headers' do
56
56
  it 'sets content_type correctly' do
57
- parser = mock('parser').as_null_object
57
+ parser = double('parser').as_null_object
58
58
  parser.stub(:request_url).and_return('')
59
59
 
60
60
  @r.parse_header({'Content-Type' => 'text/plain'}, parser)
61
61
  @r.env['CONTENT_TYPE'].should == 'text/plain'
62
62
  end
63
63
 
64
+ it 'handles bad request urls' do
65
+ parser = double('parser').as_null_object
66
+ parser.stub(:request_url).and_return('/bad?param}')
67
+
68
+ @r.stub(:server_exception)
69
+ @r.should_receive(:server_exception)
70
+ @r.parse_header({}, parser)
71
+ end
72
+
64
73
  it 'sets content_length correctly' do
65
- parser = mock('parser').as_null_object
74
+ parser = double('parser').as_null_object
66
75
  parser.stub(:request_url).and_return('')
67
76
 
68
77
  @r.parse_header({'Content-Length' => 42}, parser)
@@ -70,7 +79,7 @@ describe Goliath::Request do
70
79
  end
71
80
 
72
81
  it 'sets server_name and server_port correctly' do
73
- parser = mock('parser').as_null_object
82
+ parser = double('parser').as_null_object
74
83
  parser.stub(:request_url).and_return('')
75
84
 
76
85
  @r.parse_header({'Host' => 'myhost.com:3000'}, parser)
@@ -4,10 +4,10 @@ require 'goliath/runner'
4
4
  describe Goliath::Runner do
5
5
  before(:each) do
6
6
  @r = Goliath::Runner.new([], nil)
7
- @r.stub!(:store_pid)
7
+ @r.stub(:store_pid)
8
8
 
9
- @log_mock = mock('logger').as_null_object
10
- @r.stub!(:setup_logger).and_return(@log_mock)
9
+ @log_mock = double('logger').as_null_object
10
+ @r.stub(:setup_logger).and_return(@log_mock)
11
11
  end
12
12
 
13
13
  describe 'server execution' do
@@ -35,10 +35,10 @@ describe Goliath::Runner do
35
35
  # We do need to revert to test
36
36
  Goliath.env = :test
37
37
  end
38
-
38
+
39
39
  describe 'without setting up file logger' do
40
40
  before(:each) do
41
- @r.stub!(:setup_file_logger)
41
+ @r.stub(:setup_file_logger)
42
42
  end
43
43
 
44
44
  it 'configures the logger' do
@@ -55,7 +55,7 @@ describe Goliath::Runner do
55
55
 
56
56
  describe 'log level' do
57
57
  before(:each) do
58
- FileUtils.stub!(:mkdir_p)
58
+ FileUtils.stub(:mkdir_p)
59
59
  end
60
60
 
61
61
  it 'sets the default log level' do
@@ -109,8 +109,8 @@ describe Goliath::Runner do
109
109
  end
110
110
 
111
111
  it 'creates the log dir if neeed' do
112
- Log4r::FileOutputter.stub!(:new)
113
- log_mock = mock('log').as_null_object
112
+ Log4r::FileOutputter.stub(:new)
113
+ log_mock = double('log').as_null_object
114
114
 
115
115
  FileUtils.should_receive(:mkdir_p).with('/my/log/dir')
116
116
 
@@ -120,28 +120,28 @@ describe Goliath::Runner do
120
120
  end
121
121
 
122
122
  it 'sets up the api if that implements the #setup method' do
123
- server_mock = mock("Server").as_null_object
123
+ server_mock = double("Server").as_null_object
124
124
  server_mock.api.should_receive(:setup)
125
125
 
126
- Goliath::Server.stub!(:new).and_return(server_mock)
126
+ Goliath::Server.stub(:new).and_return(server_mock)
127
127
 
128
- @r.stub!(:load_config).and_return({})
128
+ @r.stub(:load_config).and_return({})
129
129
  @r.send(:run_server)
130
130
  end
131
131
 
132
132
  it 'runs the server' do
133
- server_mock = mock("Server").as_null_object
133
+ server_mock = double("Server").as_null_object
134
134
  server_mock.should_receive(:start)
135
135
 
136
136
  Goliath::Server.should_receive(:new).and_return(server_mock)
137
137
 
138
- @r.stub!(:load_config).and_return({})
138
+ @r.stub(:load_config).and_return({})
139
139
  @r.send(:run_server)
140
140
  end
141
141
 
142
142
  it 'configures the server' do
143
143
  server_mock = Goliath::Server.new
144
- server_mock.stub!(:start)
144
+ server_mock.stub(:start)
145
145
 
146
146
  @r.app = 'my_app'
147
147
 
@@ -24,19 +24,19 @@ describe Goliath::Server do
24
24
  end
25
25
 
26
26
  it 'accepts a logger' do
27
- logger = mock('logger')
27
+ logger = double('logger')
28
28
  @s.logger = logger
29
29
  @s.logger.should == logger
30
30
  end
31
31
 
32
32
  it 'accepts an app' do
33
- app = mock('app')
33
+ app = double('app')
34
34
  @s.app = app
35
35
  @s.app.should == app
36
36
  end
37
37
 
38
38
  it 'accepts config' do
39
- config = mock('config')
39
+ config = double('config')
40
40
  @s.config = config
41
41
  @s.config.should == config
42
42
  end
@@ -59,9 +59,9 @@ describe Goliath::Server do
59
59
  end
60
60
 
61
61
  it 'provides the app to each connection' do
62
- app = mock('application')
62
+ app = double('application')
63
63
 
64
- conn = mock("connection").as_null_object
64
+ conn = double("connection").as_null_object
65
65
  conn.should_receive(:app=).with(app)
66
66
 
67
67
  EM.should_receive(:start_server).and_yield(conn)
@@ -71,9 +71,9 @@ describe Goliath::Server do
71
71
  end
72
72
 
73
73
  it 'provides the logger to each connection' do
74
- logger = mock('logger')
74
+ logger = double('logger')
75
75
 
76
- conn = mock("connection").as_null_object
76
+ conn = double("connection").as_null_object
77
77
  conn.should_receive(:logger=).with(logger)
78
78
 
79
79
  EM.should_receive(:start_server).and_yield(conn)
@@ -83,9 +83,9 @@ describe Goliath::Server do
83
83
  end
84
84
 
85
85
  it 'provides the status object to each connection' do
86
- status = mock('status')
86
+ status = double('status')
87
87
 
88
- conn = mock("connection").as_null_object
88
+ conn = double("connection").as_null_object
89
89
  conn.should_receive(:status=).with(status)
90
90
 
91
91
  EM.should_receive(:start_server).and_yield(conn)
@@ -95,7 +95,7 @@ describe Goliath::Server do
95
95
  end
96
96
 
97
97
  it 'loads the config for each connection' do
98
- conn = mock("connection").as_null_object
98
+ conn = double("connection").as_null_object
99
99
  EM.should_receive(:start_server).and_yield(conn)
100
100
 
101
101
  @s.should_receive(:load_config)
@@ -103,23 +103,11 @@ describe Goliath::Server do
103
103
  end
104
104
  end
105
105
 
106
- describe 'stop' do
107
- it 'logs when receives TERM signal' do
108
- EM.run do
109
- logger = mock('logger')
110
- logger.should_receive(:info).with('Stopping server...')
111
- @s.logger = logger
112
- @s.start
113
- @s.stop
114
- end
115
- end
116
- end
117
-
118
106
  context 'config parsing' do
119
107
  context 'environment' do
120
108
  after(:all) do
121
109
  # Be sure to revert to correct env
122
- Goliath.env = :test
110
+ Goliath.env = :test
123
111
  end
124
112
  it 'executes the block if the environment matches the provided string' do
125
113
  Goliath.env = :development
metadata CHANGED
@@ -1,8 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: goliath
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.3
5
- prerelease:
4
+ version: 1.0.4
6
5
  platform: ruby
7
6
  authors:
8
7
  - dan sinclair
@@ -10,44 +9,39 @@ authors:
10
9
  autorequire:
11
10
  bindir: bin
12
11
  cert_chain: []
13
- date: 2013-06-29 00:00:00.000000000 Z
12
+ date: 2014-06-22 00:00:00.000000000 Z
14
13
  dependencies:
15
14
  - !ruby/object:Gem::Dependency
16
15
  name: eventmachine
17
16
  requirement: !ruby/object:Gem::Requirement
18
- none: false
19
17
  requirements:
20
- - - ! '>='
18
+ - - '>='
21
19
  - !ruby/object:Gem::Version
22
20
  version: 1.0.0.beta.4
23
21
  type: :runtime
24
22
  prerelease: false
25
23
  version_requirements: !ruby/object:Gem::Requirement
26
- none: false
27
24
  requirements:
28
- - - ! '>='
25
+ - - '>='
29
26
  - !ruby/object:Gem::Version
30
27
  version: 1.0.0.beta.4
31
28
  - !ruby/object:Gem::Dependency
32
29
  name: em-synchrony
33
30
  requirement: !ruby/object:Gem::Requirement
34
- none: false
35
31
  requirements:
36
- - - ! '>='
32
+ - - '>='
37
33
  - !ruby/object:Gem::Version
38
34
  version: 1.0.0
39
35
  type: :runtime
40
36
  prerelease: false
41
37
  version_requirements: !ruby/object:Gem::Requirement
42
- none: false
43
38
  requirements:
44
- - - ! '>='
39
+ - - '>='
45
40
  - !ruby/object:Gem::Version
46
41
  version: 1.0.0
47
42
  - !ruby/object:Gem::Dependency
48
43
  name: em-websocket
49
44
  requirement: !ruby/object:Gem::Requirement
50
- none: false
51
45
  requirements:
52
46
  - - '='
53
47
  - !ruby/object:Gem::Version
@@ -55,7 +49,6 @@ dependencies:
55
49
  type: :runtime
56
50
  prerelease: false
57
51
  version_requirements: !ruby/object:Gem::Requirement
58
- none: false
59
52
  requirements:
60
53
  - - '='
61
54
  - !ruby/object:Gem::Version
@@ -63,183 +56,160 @@ dependencies:
63
56
  - !ruby/object:Gem::Dependency
64
57
  name: http_parser.rb
65
58
  requirement: !ruby/object:Gem::Requirement
66
- none: false
67
59
  requirements:
68
60
  - - '='
69
61
  - !ruby/object:Gem::Version
70
- version: 0.6.0.beta.2
62
+ version: 0.6.0
71
63
  type: :runtime
72
64
  prerelease: false
73
65
  version_requirements: !ruby/object:Gem::Requirement
74
- none: false
75
66
  requirements:
76
67
  - - '='
77
68
  - !ruby/object:Gem::Version
78
- version: 0.6.0.beta.2
69
+ version: 0.6.0
79
70
  - !ruby/object:Gem::Dependency
80
71
  name: log4r
81
72
  requirement: !ruby/object:Gem::Requirement
82
- none: false
83
73
  requirements:
84
- - - ! '>='
74
+ - - '>='
85
75
  - !ruby/object:Gem::Version
86
76
  version: '0'
87
77
  type: :runtime
88
78
  prerelease: false
89
79
  version_requirements: !ruby/object:Gem::Requirement
90
- none: false
91
80
  requirements:
92
- - - ! '>='
81
+ - - '>='
93
82
  - !ruby/object:Gem::Version
94
83
  version: '0'
95
84
  - !ruby/object:Gem::Dependency
96
85
  name: rack
97
86
  requirement: !ruby/object:Gem::Requirement
98
- none: false
99
87
  requirements:
100
- - - ! '>='
88
+ - - '>='
101
89
  - !ruby/object:Gem::Version
102
90
  version: 1.2.2
103
91
  type: :runtime
104
92
  prerelease: false
105
93
  version_requirements: !ruby/object:Gem::Requirement
106
- none: false
107
94
  requirements:
108
- - - ! '>='
95
+ - - '>='
109
96
  - !ruby/object:Gem::Version
110
97
  version: 1.2.2
111
98
  - !ruby/object:Gem::Dependency
112
99
  name: rack-contrib
113
100
  requirement: !ruby/object:Gem::Requirement
114
- none: false
115
101
  requirements:
116
- - - ! '>='
102
+ - - '>='
117
103
  - !ruby/object:Gem::Version
118
104
  version: '0'
119
105
  type: :runtime
120
106
  prerelease: false
121
107
  version_requirements: !ruby/object:Gem::Requirement
122
- none: false
123
108
  requirements:
124
- - - ! '>='
109
+ - - '>='
125
110
  - !ruby/object:Gem::Version
126
111
  version: '0'
127
112
  - !ruby/object:Gem::Dependency
128
113
  name: rack-respond_to
129
114
  requirement: !ruby/object:Gem::Requirement
130
- none: false
131
115
  requirements:
132
- - - ! '>='
116
+ - - '>='
133
117
  - !ruby/object:Gem::Version
134
118
  version: '0'
135
119
  type: :runtime
136
120
  prerelease: false
137
121
  version_requirements: !ruby/object:Gem::Requirement
138
- none: false
139
122
  requirements:
140
- - - ! '>='
123
+ - - '>='
141
124
  - !ruby/object:Gem::Version
142
125
  version: '0'
143
126
  - !ruby/object:Gem::Dependency
144
127
  name: async-rack
145
128
  requirement: !ruby/object:Gem::Requirement
146
- none: false
147
129
  requirements:
148
- - - ! '>='
130
+ - - '>='
149
131
  - !ruby/object:Gem::Version
150
132
  version: '0'
151
133
  type: :runtime
152
134
  prerelease: false
153
135
  version_requirements: !ruby/object:Gem::Requirement
154
- none: false
155
136
  requirements:
156
- - - ! '>='
137
+ - - '>='
157
138
  - !ruby/object:Gem::Version
158
139
  version: '0'
159
140
  - !ruby/object:Gem::Dependency
160
141
  name: multi_json
161
142
  requirement: !ruby/object:Gem::Requirement
162
- none: false
163
143
  requirements:
164
- - - ! '>='
144
+ - - '>='
165
145
  - !ruby/object:Gem::Version
166
146
  version: '0'
167
147
  type: :runtime
168
148
  prerelease: false
169
149
  version_requirements: !ruby/object:Gem::Requirement
170
- none: false
171
150
  requirements:
172
- - - ! '>='
151
+ - - '>='
173
152
  - !ruby/object:Gem::Version
174
153
  version: '0'
175
154
  - !ruby/object:Gem::Dependency
176
155
  name: rake
177
156
  requirement: !ruby/object:Gem::Requirement
178
- none: false
179
157
  requirements:
180
- - - ! '>='
158
+ - - '>='
181
159
  - !ruby/object:Gem::Version
182
160
  version: 0.8.7
183
161
  type: :development
184
162
  prerelease: false
185
163
  version_requirements: !ruby/object:Gem::Requirement
186
- none: false
187
164
  requirements:
188
- - - ! '>='
165
+ - - '>='
189
166
  - !ruby/object:Gem::Version
190
167
  version: 0.8.7
191
168
  - !ruby/object:Gem::Dependency
192
169
  name: rspec
193
170
  requirement: !ruby/object:Gem::Requirement
194
- none: false
195
171
  requirements:
196
- - - ! '>'
172
+ - - '>'
197
173
  - !ruby/object:Gem::Version
198
174
  version: '2.0'
199
175
  type: :development
200
176
  prerelease: false
201
177
  version_requirements: !ruby/object:Gem::Requirement
202
- none: false
203
178
  requirements:
204
- - - ! '>'
179
+ - - '>'
205
180
  - !ruby/object:Gem::Version
206
181
  version: '2.0'
207
182
  - !ruby/object:Gem::Dependency
208
183
  name: nokogiri
209
184
  requirement: !ruby/object:Gem::Requirement
210
- none: false
211
185
  requirements:
212
- - - ! '>='
186
+ - - '>='
213
187
  - !ruby/object:Gem::Version
214
188
  version: '0'
215
189
  type: :development
216
190
  prerelease: false
217
191
  version_requirements: !ruby/object:Gem::Requirement
218
- none: false
219
192
  requirements:
220
- - - ! '>='
193
+ - - '>='
221
194
  - !ruby/object:Gem::Version
222
195
  version: '0'
223
196
  - !ruby/object:Gem::Dependency
224
197
  name: em-http-request
225
198
  requirement: !ruby/object:Gem::Requirement
226
- none: false
227
199
  requirements:
228
- - - ! '>='
200
+ - - '>='
229
201
  - !ruby/object:Gem::Version
230
202
  version: 1.0.0
231
203
  type: :development
232
204
  prerelease: false
233
205
  version_requirements: !ruby/object:Gem::Requirement
234
- none: false
235
206
  requirements:
236
- - - ! '>='
207
+ - - '>='
237
208
  - !ruby/object:Gem::Version
238
209
  version: 1.0.0
239
210
  - !ruby/object:Gem::Dependency
240
211
  name: em-mongo
241
212
  requirement: !ruby/object:Gem::Requirement
242
- none: false
243
213
  requirements:
244
214
  - - ~>
245
215
  - !ruby/object:Gem::Version
@@ -247,7 +217,6 @@ dependencies:
247
217
  type: :development
248
218
  prerelease: false
249
219
  version_requirements: !ruby/object:Gem::Requirement
250
- none: false
251
220
  requirements:
252
221
  - - ~>
253
222
  - !ruby/object:Gem::Version
@@ -255,199 +224,188 @@ dependencies:
255
224
  - !ruby/object:Gem::Dependency
256
225
  name: rack-rewrite
257
226
  requirement: !ruby/object:Gem::Requirement
258
- none: false
259
227
  requirements:
260
- - - ! '>='
228
+ - - '>='
261
229
  - !ruby/object:Gem::Version
262
230
  version: '0'
263
231
  type: :development
264
232
  prerelease: false
265
233
  version_requirements: !ruby/object:Gem::Requirement
266
- none: false
267
234
  requirements:
268
- - - ! '>='
235
+ - - '>='
269
236
  - !ruby/object:Gem::Version
270
237
  version: '0'
271
238
  - !ruby/object:Gem::Dependency
272
239
  name: multipart_body
273
240
  requirement: !ruby/object:Gem::Requirement
274
- none: false
275
241
  requirements:
276
- - - ! '>='
242
+ - - '>='
277
243
  - !ruby/object:Gem::Version
278
244
  version: '0'
279
245
  type: :development
280
246
  prerelease: false
281
247
  version_requirements: !ruby/object:Gem::Requirement
282
- none: false
283
248
  requirements:
284
- - - ! '>='
249
+ - - '>='
285
250
  - !ruby/object:Gem::Version
286
251
  version: '0'
287
252
  - !ruby/object:Gem::Dependency
288
253
  name: amqp
289
254
  requirement: !ruby/object:Gem::Requirement
290
- none: false
291
255
  requirements:
292
- - - ! '>='
256
+ - - '>='
293
257
  - !ruby/object:Gem::Version
294
258
  version: 0.7.1
295
259
  type: :development
296
260
  prerelease: false
297
261
  version_requirements: !ruby/object:Gem::Requirement
298
- none: false
299
262
  requirements:
300
- - - ! '>='
263
+ - - '>='
301
264
  - !ruby/object:Gem::Version
302
265
  version: 0.7.1
303
266
  - !ruby/object:Gem::Dependency
304
267
  name: em-websocket-client
305
268
  requirement: !ruby/object:Gem::Requirement
306
- none: false
307
269
  requirements:
308
- - - ! '>='
270
+ - - '>='
309
271
  - !ruby/object:Gem::Version
310
272
  version: '0'
311
273
  type: :development
312
274
  prerelease: false
313
275
  version_requirements: !ruby/object:Gem::Requirement
314
- none: false
315
276
  requirements:
316
- - - ! '>='
277
+ - - '>='
317
278
  - !ruby/object:Gem::Version
318
279
  version: '0'
319
280
  - !ruby/object:Gem::Dependency
320
281
  name: tilt
321
282
  requirement: !ruby/object:Gem::Requirement
322
- none: false
323
283
  requirements:
324
- - - ! '>='
284
+ - - '>='
325
285
  - !ruby/object:Gem::Version
326
286
  version: 1.2.2
327
287
  type: :development
328
288
  prerelease: false
329
289
  version_requirements: !ruby/object:Gem::Requirement
330
- none: false
331
290
  requirements:
332
- - - ! '>='
291
+ - - '>='
333
292
  - !ruby/object:Gem::Version
334
293
  version: 1.2.2
335
294
  - !ruby/object:Gem::Dependency
336
295
  name: haml
337
296
  requirement: !ruby/object:Gem::Requirement
338
- none: false
339
297
  requirements:
340
- - - ! '>='
298
+ - - '>='
341
299
  - !ruby/object:Gem::Version
342
300
  version: 3.0.25
343
301
  type: :development
344
302
  prerelease: false
345
303
  version_requirements: !ruby/object:Gem::Requirement
346
- none: false
347
304
  requirements:
348
- - - ! '>='
305
+ - - '>='
349
306
  - !ruby/object:Gem::Version
350
307
  version: 3.0.25
351
308
  - !ruby/object:Gem::Dependency
352
309
  name: yard
353
310
  requirement: !ruby/object:Gem::Requirement
354
- none: false
355
311
  requirements:
356
- - - ! '>='
312
+ - - '>='
357
313
  - !ruby/object:Gem::Version
358
314
  version: '0'
359
315
  type: :development
360
316
  prerelease: false
361
317
  version_requirements: !ruby/object:Gem::Requirement
362
- none: false
363
318
  requirements:
364
- - - ! '>='
319
+ - - '>='
365
320
  - !ruby/object:Gem::Version
366
321
  version: '0'
367
322
  - !ruby/object:Gem::Dependency
368
323
  name: guard
369
324
  requirement: !ruby/object:Gem::Requirement
370
- none: false
371
325
  requirements:
372
- - - ! '>='
326
+ - - ~>
373
327
  - !ruby/object:Gem::Version
374
- version: '0'
328
+ version: 1.8.3
375
329
  type: :development
376
330
  prerelease: false
377
331
  version_requirements: !ruby/object:Gem::Requirement
378
- none: false
379
332
  requirements:
380
- - - ! '>='
333
+ - - ~>
381
334
  - !ruby/object:Gem::Version
382
- version: '0'
335
+ version: 1.8.3
383
336
  - !ruby/object:Gem::Dependency
384
337
  name: guard-rspec
385
338
  requirement: !ruby/object:Gem::Requirement
386
- none: false
387
339
  requirements:
388
- - - ! '>='
340
+ - - ~>
389
341
  - !ruby/object:Gem::Version
390
- version: '0'
342
+ version: 3.1.0
391
343
  type: :development
392
344
  prerelease: false
393
345
  version_requirements: !ruby/object:Gem::Requirement
394
- none: false
395
346
  requirements:
396
- - - ! '>='
347
+ - - ~>
397
348
  - !ruby/object:Gem::Version
398
- version: '0'
349
+ version: 3.1.0
350
+ - !ruby/object:Gem::Dependency
351
+ name: listen
352
+ requirement: !ruby/object:Gem::Requirement
353
+ requirements:
354
+ - - ~>
355
+ - !ruby/object:Gem::Version
356
+ version: 1.3.1
357
+ type: :development
358
+ prerelease: false
359
+ version_requirements: !ruby/object:Gem::Requirement
360
+ requirements:
361
+ - - ~>
362
+ - !ruby/object:Gem::Version
363
+ version: 1.3.1
399
364
  - !ruby/object:Gem::Dependency
400
365
  name: yajl-ruby
401
366
  requirement: !ruby/object:Gem::Requirement
402
- none: false
403
367
  requirements:
404
- - - ! '>='
368
+ - - '>='
405
369
  - !ruby/object:Gem::Version
406
370
  version: '0'
407
371
  type: :development
408
372
  prerelease: false
409
373
  version_requirements: !ruby/object:Gem::Requirement
410
- none: false
411
374
  requirements:
412
- - - ! '>='
375
+ - - '>='
413
376
  - !ruby/object:Gem::Version
414
377
  version: '0'
415
378
  - !ruby/object:Gem::Dependency
416
379
  name: bluecloth
417
380
  requirement: !ruby/object:Gem::Requirement
418
- none: false
419
381
  requirements:
420
- - - ! '>='
382
+ - - '>='
421
383
  - !ruby/object:Gem::Version
422
384
  version: '0'
423
385
  type: :development
424
386
  prerelease: false
425
387
  version_requirements: !ruby/object:Gem::Requirement
426
- none: false
427
388
  requirements:
428
- - - ! '>='
389
+ - - '>='
429
390
  - !ruby/object:Gem::Version
430
391
  version: '0'
431
392
  - !ruby/object:Gem::Dependency
432
393
  name: bson_ext
433
394
  requirement: !ruby/object:Gem::Requirement
434
- none: false
435
395
  requirements:
436
- - - ! '>='
396
+ - - '>='
437
397
  - !ruby/object:Gem::Version
438
398
  version: '0'
439
399
  type: :development
440
400
  prerelease: false
441
401
  version_requirements: !ruby/object:Gem::Requirement
442
- none: false
443
402
  requirements:
444
- - - ! '>='
403
+ - - '>='
445
404
  - !ruby/object:Gem::Version
446
405
  version: '0'
447
406
  - !ruby/object:Gem::Dependency
448
407
  name: growl
449
408
  requirement: !ruby/object:Gem::Requirement
450
- none: false
451
409
  requirements:
452
410
  - - ~>
453
411
  - !ruby/object:Gem::Version
@@ -455,7 +413,6 @@ dependencies:
455
413
  type: :development
456
414
  prerelease: false
457
415
  version_requirements: !ruby/object:Gem::Requirement
458
- none: false
459
416
  requirements:
460
417
  - - ~>
461
418
  - !ruby/object:Gem::Version
@@ -463,17 +420,15 @@ dependencies:
463
420
  - !ruby/object:Gem::Dependency
464
421
  name: rb-fsevent
465
422
  requirement: !ruby/object:Gem::Requirement
466
- none: false
467
423
  requirements:
468
- - - ! '>='
424
+ - - '>='
469
425
  - !ruby/object:Gem::Version
470
426
  version: '0'
471
427
  type: :development
472
428
  prerelease: false
473
429
  version_requirements: !ruby/object:Gem::Requirement
474
- none: false
475
430
  requirements:
476
- - - ! '>='
431
+ - - '>='
477
432
  - !ruby/object:Gem::Version
478
433
  version: '0'
479
434
  description: Async framework for writing API servers
@@ -487,10 +442,12 @@ files:
487
442
  - examples/activerecord/config/srv.rb
488
443
  - examples/activerecord/srv.rb
489
444
  - examples/api_proxy.rb
445
+ - examples/around.rb
490
446
  - examples/async_aroundware_demo.rb
491
447
  - examples/async_upload.rb
492
448
  - examples/auth_and_rate_limit.rb
493
449
  - examples/chunked_streaming.rb
450
+ - examples/clone.rb
494
451
  - examples/conf_test.rb
495
452
  - examples/config/auth_and_rate_limit.rb
496
453
  - examples/config/conf_test.rb
@@ -517,9 +474,12 @@ files:
517
474
  - examples/rasterize/rasterize.js
518
475
  - examples/rasterize/rasterize.rb
519
476
  - examples/rasterize/rasterize_and_shorten.rb
477
+ - examples/router.rb
520
478
  - examples/stream.rb
521
479
  - examples/template.rb
480
+ - examples/test.rb
522
481
  - examples/test_rig.rb
482
+ - examples/upload.rb
523
483
  - examples/views/debug.haml
524
484
  - examples/views/joke.markdown
525
485
  - examples/views/layout.erb
@@ -645,27 +605,26 @@ files:
645
605
  - .yardopts
646
606
  homepage: http://goliath.io/
647
607
  licenses: []
608
+ metadata: {}
648
609
  post_install_message:
649
610
  rdoc_options: []
650
611
  require_paths:
651
612
  - lib
652
613
  required_ruby_version: !ruby/object:Gem::Requirement
653
- none: false
654
614
  requirements:
655
- - - ! '>='
615
+ - - '>='
656
616
  - !ruby/object:Gem::Version
657
617
  version: 1.9.2
658
618
  required_rubygems_version: !ruby/object:Gem::Requirement
659
- none: false
660
619
  requirements:
661
- - - ! '>='
620
+ - - '>='
662
621
  - !ruby/object:Gem::Version
663
622
  version: '0'
664
623
  requirements: []
665
624
  rubyforge_project:
666
- rubygems_version: 1.8.24
625
+ rubygems_version: 2.0.6
667
626
  signing_key:
668
- specification_version: 3
627
+ specification_version: 4
669
628
  summary: Async framework for writing API servers
670
629
  test_files:
671
630
  - spec/integration/async_request_processing.rb