hi 1.2.0 → 1.2.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: d62905c572b1eec0a16b7e2eae36f284231c89bd
4
- data.tar.gz: fad5a24a9be7b66e9be3046388454baa662afdfe
3
+ metadata.gz: fa67d1893f36e4de0d7869cd034c1a4f4c52fdf1
4
+ data.tar.gz: 52116bf9b6840792dcc49f35a3228ba19ebf9bd9
5
5
  SHA512:
6
- metadata.gz: aae46842f2606ab3374933b9e265dd2649bef5cb09315549001b943df3f87c4d6c39199c06b4c5f5798af39586d05069ffd2b43ddc013548c27b57cb3d34d6a0
7
- data.tar.gz: fb7a173ed1ebb24171829acd469d32a2606cb263425c4a7912733bc295b33469e2d3940c4e3535c780a0e2ab82c2d0f367875543daa9b5defdc993f44f262e64
6
+ metadata.gz: ec28a50bb9c90f4d03c4dbee1e6963f534294d6b36fa34e6a45709746e6b14b1f03b7cec5b74ce50db5d75d9ad5c881d682e091dfd96bb1b1792678f853b33f6
7
+ data.tar.gz: 64587eb574ae81a82e277c1e716dece6b6f2bf8c660c87e93d3aa4c2e9e555c13c4709380a32fe7a75f5a9d73f4687b18094c0834c48bbd4ea6f664da2ea1527
data/CHANGELOG.md CHANGED
@@ -1,5 +1,10 @@
1
1
  # Changelog
2
2
 
3
+ ##v1.2.1
4
+ *2014-01-04*
5
+
6
+ - [#6](https://github.com/chrishunt/hi/pull/6) Extract logger
7
+
3
8
  ##v1.2.0
4
9
  *2013-12-29*
5
10
 
data/lib/hi/app.rb CHANGED
@@ -1,29 +1,28 @@
1
- require 'awesome_print'
2
1
  require 'hi/request'
2
+ require 'hi/logger'
3
3
 
4
4
  module Hi
5
5
  class App
6
- attr_reader :port
6
+ attr_reader :port, :logger
7
7
 
8
8
  DEFAULT_PORT = 3000
9
9
 
10
- def initialize(port = nil)
10
+ def initialize(port = nil, logger = Hi::Logger.new)
11
11
  @port = (port = port.to_i) > 0 ? port : DEFAULT_PORT
12
+ @logger = logger
12
13
  end
13
14
 
14
15
  def call(env)
15
- log Hi::Request.new(env).to_h
16
+ request = Hi::Request.new(env).to_h
17
+
18
+ log "#{request[:request_method]} #{request[:url]} (#{Time.now})"
19
+ log request
16
20
 
17
21
  [ 200, { 'Content-Type' => 'text/plain' }, ['hi'] ]
18
22
  end
19
23
 
20
- private
21
-
22
- def log(request)
23
- unless ENV['RACK_ENV'] == 'test'
24
- ap "#{request[:request_method]} #{request[:url]} (#{Time.now})"
25
- ap request
26
- end
24
+ def log(message)
25
+ logger.log message
27
26
  end
28
27
  end
29
28
  end
data/lib/hi/logger.rb ADDED
@@ -0,0 +1,23 @@
1
+ require 'awesome_print'
2
+
3
+ module Hi
4
+ class Logger
5
+ def log(message)
6
+ print message unless testing
7
+ end
8
+
9
+ private
10
+
11
+ def print(message)
12
+ if message.is_a? String
13
+ puts message
14
+ else
15
+ ap message
16
+ end
17
+ end
18
+
19
+ def testing
20
+ ENV['RACK_ENV'] == 'test'
21
+ end
22
+ end
23
+ end
data/lib/hi/server.rb CHANGED
@@ -13,11 +13,11 @@ module Hi
13
13
  end
14
14
 
15
15
  def start(port = app.port, attempts = 1)
16
- log "Starting server on port #{port}...\n\n"
16
+ app.log "Starting server on port #{port}...\n\n"
17
17
  start! port
18
18
  rescue RuntimeError => e
19
19
  if attempts < MAX_ATTEMPTS
20
- log "\nUnable to start server, trying random port instead."
20
+ app.log "\nUnable to start server, trying random port instead."
21
21
  start random_port, attempts + 1
22
22
  else
23
23
  raise CantStartServerError.new(e)
@@ -33,9 +33,5 @@ module Hi
33
33
  def random_port
34
34
  1000 + Random.rand(9000)
35
35
  end
36
-
37
- def log(message)
38
- puts message unless ENV['RACK_ENV'] == 'test'
39
- end
40
36
  end
41
37
  end
data/lib/hi/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Hi
2
- VERSION = '1.2.0'
2
+ VERSION = '1.2.1'
3
3
  end
data/lib/hi.rb CHANGED
@@ -1,4 +1,5 @@
1
1
  require 'hi/version'
2
+ require 'hi/logger'
2
3
  require 'hi/request'
3
4
  require 'hi/app'
4
5
  require 'hi/server'
@@ -0,0 +1,48 @@
1
+ require 'spec_helper'
2
+ require 'hi/logger'
3
+
4
+ describe Hi::Logger do
5
+ let(:logger) { described_class.new }
6
+ let(:message) { 'Hello logger' }
7
+
8
+ context "when RACK_ENV is not 'test'" do
9
+ before do
10
+ ENV['RACK_ENV'] = 'the real deal'
11
+ end
12
+
13
+ it 'prints message to standard out' do
14
+ stdout = capture_stdout do
15
+ logger.log message
16
+ end
17
+
18
+ expect(stdout).to include message
19
+ end
20
+ end
21
+
22
+ context "when RACK_ENV is 'test'" do
23
+ before do
24
+ ENV['RACK_ENV'] = 'test'
25
+ end
26
+
27
+ it 'does not print message to standard out' do
28
+ stdout = capture_stdout do
29
+ logger.log message
30
+ end
31
+
32
+ expect(stdout).to be_empty
33
+ end
34
+ end
35
+
36
+ private
37
+
38
+ def capture_stdout
39
+ captured = StringIO.new
40
+ stdout = $stdout
41
+ $stdout = captured
42
+
43
+ yield
44
+
45
+ $stdout = stdout
46
+ captured.string
47
+ end
48
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: hi
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.0
4
+ version: 1.2.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Chris Hunt
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-12-29 00:00:00.000000000 Z
11
+ date: 2014-01-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: awesome_print
@@ -128,11 +128,13 @@ files:
128
128
  - hi.gemspec
129
129
  - lib/hi.rb
130
130
  - lib/hi/app.rb
131
+ - lib/hi/logger.rb
131
132
  - lib/hi/request.rb
132
133
  - lib/hi/server.rb
133
134
  - lib/hi/version.rb
134
135
  - screenshot.png
135
136
  - spec/hi/app_spec.rb
137
+ - spec/hi/logger_spec.rb
136
138
  - spec/hi/request_spec.rb
137
139
  - spec/hi/server_spec.rb
138
140
  - spec/spec_helper.rb
@@ -162,6 +164,7 @@ specification_version: 4
162
164
  summary: hi, I'm here to debug your HTTP
163
165
  test_files:
164
166
  - spec/hi/app_spec.rb
167
+ - spec/hi/logger_spec.rb
165
168
  - spec/hi/request_spec.rb
166
169
  - spec/hi/server_spec.rb
167
170
  - spec/spec_helper.rb