low 0.0.17 → 0.0.18

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- low (0.0.16)
4
+ low (0.0.17)
5
5
  bson_ext (~> 1.8.2)
6
6
  mongo (~> 1.8.2)
7
7
  rack (~> 1.5.2)
data/lib/low.rb CHANGED
@@ -3,5 +3,4 @@ $:.push File.dirname(__FILE__)
3
3
  require 'low/version'
4
4
 
5
5
  module Low
6
- DEFAULT_LOGGER_KEY = 'rack.logger'
7
6
  end
@@ -0,0 +1,19 @@
1
+ module Low
2
+ module Rack
3
+ class Default
4
+
5
+ LOGGER_KEY = 'rack.logger'
6
+
7
+ def initialize(app)
8
+ @app = app
9
+ end
10
+
11
+ def call(env)
12
+ env['low.show_exceptions'] =
13
+ ['development', 'test'].include? ENV['RACK_ENV']
14
+
15
+ @app.call(env)
16
+ end
17
+ end
18
+ end
19
+ end
@@ -1,4 +1,4 @@
1
- require 'low'
1
+ require 'low/rack/default'
2
2
 
3
3
  module Low
4
4
  module Rack
@@ -10,7 +10,7 @@ module Low
10
10
 
11
11
  def initialize(app, opts = {})
12
12
  @app = app
13
- @logger_key = opts[:logger_key] || Low::DEFAULT_LOGGER_KEY
13
+ @logger_key = opts[:logger_key] || Low::Rack::Default::LOGGER_KEY
14
14
  end
15
15
 
16
16
  def call(env)
@@ -12,7 +12,7 @@ module Low
12
12
  end
13
13
 
14
14
  def call(env)
15
- env['low.log_level'] = log_level
15
+ env['low.log_level'] ||= log_level
16
16
  @app.call(env)
17
17
  end
18
18
 
@@ -10,7 +10,7 @@ module Low
10
10
  end
11
11
 
12
12
  def call(env)
13
- env['rack.errors'] = io
13
+ env['rack.errors'] ||= io
14
14
  @app.call(env)
15
15
  end
16
16
 
@@ -21,19 +21,21 @@ module Low
21
21
  end
22
22
 
23
23
  def call(env)
24
- # If there is a request_id parameter,
25
- req = ::Rack::Request.new(env)
24
+ unless env['low.request_id']
26
25
 
27
- # and it's valid, use it;
28
- if req['request_id'] and RequestId.is_valid?(req['request_id'])
29
- env['useless.request_id'] = req['request_id']
26
+ # If there is a request_id parameter,
27
+ req = ::Rack::Request.new(env)
30
28
 
31
- # otherwise, use the generated one
32
- else
33
- env['useless.request_id'] = @current_request_id.to_s
29
+ # and it's valid, use it;
30
+ if req['request_id'] and RequestId.is_valid?(req['request_id'])
31
+ env['low.request_id'] = req['request_id']
32
+
33
+ # otherwise, use the generated one
34
+ else
35
+ env['low.request_id'] = @current_request_id.to_s
36
+ end
34
37
  end
35
38
 
36
- # and call the app.
37
39
  @app.call(env)
38
40
  end
39
41
  end
@@ -1,5 +1,5 @@
1
1
  require 'logger'
2
- require 'low'
2
+ require 'low/rack/default'
3
3
  require 'low/scoped_logger'
4
4
 
5
5
  module Low
@@ -12,7 +12,7 @@ module Low
12
12
 
13
13
  def initialize(app, opts = {})
14
14
  @app = app
15
- @key = opts[:key] || Low::DEFAULT_LOGGER_KEY
15
+ @key = opts[:key] || Low::Rack::Default::LOGGER_KEY
16
16
  end
17
17
 
18
18
  def call(env)
@@ -1,3 +1,3 @@
1
1
  module Low
2
- VERSION = '0.0.17'
2
+ VERSION = '0.0.18'
3
3
  end
@@ -0,0 +1,50 @@
1
+ require File.dirname(__FILE__) + '/../../spec_helper'
2
+
3
+ require 'low/rack/default'
4
+
5
+ describe Low::Rack::Default do
6
+ def app(key)
7
+ base = lambda do |env|
8
+ [200, {'Content-Type' => 'text/plain'}, [env[key]]]
9
+ end
10
+
11
+ Low::Rack::Default.new(base)
12
+ end
13
+
14
+ context 'low.show_exceptions' do
15
+ it 'should set low.show_exceptions to true in development' do
16
+ begin
17
+ ENV['RACK_ENV'] = 'development'
18
+ response = app('low.show_exceptions').call({})
19
+ response[2].first.should == true
20
+ ensure
21
+ ENV['RACK_ENV'] = 'test'
22
+ end
23
+ end
24
+
25
+ it 'should set low.show_exceptions to true in test' do
26
+ response = app('low.show_exceptions').call({})
27
+ response[2].first.should == true
28
+ end
29
+
30
+ it 'should set low.show_exceptions to false in production' do
31
+ begin
32
+ ENV['RACK_ENV'] = 'production'
33
+ response = app('low.show_exceptions').call({})
34
+ response[2].first.should == false
35
+ ensure
36
+ ENV['RACK_ENV'] = 'test'
37
+ end
38
+ end
39
+
40
+ it 'should set low.show_exceptions to false in any other environment' do
41
+ begin
42
+ ENV['RACK_ENV'] = 'stage'
43
+ response = app('low.show_exceptions').call({})
44
+ response[2].first.should == false
45
+ ensure
46
+ ENV['RACK_ENV'] = 'test'
47
+ end
48
+ end
49
+ end
50
+ end
@@ -60,4 +60,11 @@ describe Low::Rack::LogLevel do
60
60
  response = rack.call({})
61
61
  response[2].should == Logger::DEBUG
62
62
  end
63
+
64
+ it 'should not set low.log_level if it is already set' do
65
+ ENV['LOG_LEVEL'] = 'DEBUG'
66
+ rack = Low::Rack::LogLevel.new test_app, default_level: Logger::DEBUG
67
+ response = rack.call({'low.log_level' => Logger::INFO})
68
+ response[2].should == Logger::INFO
69
+ end
63
70
  end
@@ -40,4 +40,11 @@ describe Low::Rack::RackErrors do
40
40
  response = rack.call({})
41
41
  response[2].should == STDOUT
42
42
  end
43
+
44
+ it 'should not set rack.errors if it is already set' do
45
+ ENV['RACK_ENV'] = 'test'
46
+ rack = Low::Rack::RackErrors.new test_app
47
+ response = rack.call('rack.errors' => STDOUT)
48
+ response[2].should == STDOUT
49
+ end
43
50
  end
@@ -4,27 +4,33 @@ require 'low/rack/request_id'
4
4
  describe Low::Rack::RequestId do
5
5
  def app
6
6
  app = lambda do |env|
7
- [200, {'Content-Type' => 'text/plain'}, ['Request Id: ' + env['useless.request_id']]]
7
+ [200, {'Content-Type' => 'text/plain'}, ['Request Id: ' + env['low.request_id']]]
8
8
  end
9
9
 
10
10
  Low::Rack::RequestId.new(app)
11
11
  end
12
12
 
13
13
  it 'should add a request ID to the env while proxying transparently' do
14
- res = Rack::MockRequest.new(app).get('http://useless.info')
14
+ res = Rack::MockRequest.new(app).get('http://low.edu')
15
15
  res.should be_ok
16
16
  res.body.should =~ /Request Id: [a-z0-9]{1,}/
17
17
  end
18
18
 
19
19
  it 'should use the ID specified in the query parameter' do
20
- res = Rack::MockRequest.new(app).get('http://useless.info?request_id=jah')
20
+ res = Rack::MockRequest.new(app).get('http://low.edu?request_id=jah')
21
21
  res.should be_ok
22
22
  res.body.should == 'Request Id: jah'
23
23
  end
24
24
 
25
25
  it 'should not use the ID specified it does not have "simple" characters' do
26
- res = Rack::MockRequest.new(app).get('http://useless.info?request_id=(jah)')
26
+ res = Rack::MockRequest.new(app).get('http://low.edu?request_id=(jah)')
27
27
  res.should be_ok
28
28
  res.body.should_not == 'Request Id: (jah)'
29
29
  end
30
+
31
+ it 'should not set low.request_id if it is already set' do
32
+ set_app = lambda { |env| app.call(env.merge('low.request_id' => 'special request ID')) }
33
+ res = Rack::MockRequest.new(set_app).get('http://low.edu?request_id=jah')
34
+ res.body.should == 'Request Id: special request ID'
35
+ end
30
36
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: low
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.17
4
+ version: 0.0.18
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -109,6 +109,7 @@ files:
109
109
  - lib/low/mongo.rb
110
110
  - lib/low/mongo/heroku.rb
111
111
  - lib/low/mongo/util.rb
112
+ - lib/low/rack/default.rb
112
113
  - lib/low/rack/exceptions.rb
113
114
  - lib/low/rack/log_level.rb
114
115
  - lib/low/rack/rack_errors.rb
@@ -120,6 +121,7 @@ files:
120
121
  - low.gemspec
121
122
  - spec/low/mongo/util_spec.rb
122
123
  - spec/low/mongo_spec.rb
124
+ - spec/low/rack/default_spec.rb
123
125
  - spec/low/rack/exceptions_spec.rb
124
126
  - spec/low/rack/log_level_spec.rb
125
127
  - spec/low/rack/rack_errors_spec.rb
@@ -155,6 +157,7 @@ summary: A low-level utility library.
155
157
  test_files:
156
158
  - spec/low/mongo/util_spec.rb
157
159
  - spec/low/mongo_spec.rb
160
+ - spec/low/rack/default_spec.rb
158
161
  - spec/low/rack/exceptions_spec.rb
159
162
  - spec/low/rack/log_level_spec.rb
160
163
  - spec/low/rack/rack_errors_spec.rb