rack-simple_logger 0.0.1 → 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,15 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: cdeacb05b7b9ef32c4ca054b779605f82fb2735b
4
- data.tar.gz: 403ca7a567112c8e266223b1f3d850ee570f4fdb
5
- SHA512:
6
- metadata.gz: f8bbf3633a24a4f93c6720af50ace4f5bd33667944fae194a0a7553ceda5fd896cfe14ebb920fb04ccd505970f80bb61c4d8707524720cdb1bcd68a230eea29e
7
- data.tar.gz: 3ebbc796fceb3015091c4f080b1e1df3c6c9c55f6c85a1b088bd4f3d7c51806d34af4b5634d21292d33a574c3093c71361389717555d1906694a908f9790defc
2
+ !binary "U0hBMQ==":
3
+ metadata.gz: !binary |-
4
+ ZTM2NzNlNDRiYmNiNGZlZjcyM2U3YzEwN2NjMDlkZTM5YzZmZDIxMQ==
5
+ data.tar.gz: !binary |-
6
+ ZDM0Mjg4Mjc3NjZmOGEwMTljNWQ4ZjRlZmZjMTQyYTgyNTU4ZDBiYQ==
7
+ !binary "U0hBNTEy":
8
+ metadata.gz: !binary |-
9
+ MTgxYTcyZjEyZGVmOTRiZjZmNDQ5MGU3Nzg3ZWI3OTQ3NmNkZmRjYzU1YzU1
10
+ NWJkOWU0M2U0MDJiOTBmODIwYjU2YjcxZTI2YmUwMDE4NDM4ZWMzOGYyYjMw
11
+ MWUxNjBlZmFlMjE5OGY1YTI0NjMxNTg0N2I3NjA0Y2Y2Njg0NGY=
12
+ data.tar.gz: !binary |-
13
+ NzEyZTI2OTk2Yjk0NDE3MzFlNzFjNDA0YWVhYjEyYmQxNTI3NDNlMTE0ZTU3
14
+ ZTk3ZWM0NTkyMjY5ZDkyYjA5N2Y5ZGZjYmQ5ZWI1NTEyYTgzOWM2NmY4Mzdj
15
+ MmUxODI1YjNkMzZjYTk2ZTIzZGE5N2Y0ODMwNGEzMDBmZGU2MjA=
data/.coveralls.yml ADDED
@@ -0,0 +1 @@
1
+ repo_token: aUWKzMB87Ndks1lvyCKgD2WVPwqwiYoXN
data/.travis.yml ADDED
@@ -0,0 +1,13 @@
1
+ language: ruby
2
+ rvm:
3
+ - 1.9.3
4
+ - 2.0.0
5
+ gemfile:
6
+ - Gemfile
7
+ script: bundle exec rake spec
8
+ branches:
9
+ only:
10
+ - master
11
+ notifications:
12
+ mails:
13
+ - i2bskn@gmail.com
data/README.md CHANGED
@@ -1,5 +1,10 @@
1
1
  # Rack::SimpleLogger
2
2
 
3
+ [![Gem Version](https://badge.fury.io/rb/rack-simple_logger.png)](http://badge.fury.io/rb/rack-simple_logger)
4
+ [![Build Status](https://travis-ci.org/i2bskn/rack-simple_logger.png?branch=master)](https://travis-ci.org/i2bskn/rack-simple_logger)
5
+ [![Coverage Status](https://coveralls.io/repos/i2bskn/rack-simple_logger/badge.png?branch=master)](https://coveralls.io/r/i2bskn/rack-simple_logger?branch=master)
6
+ [![Code Climate](https://codeclimate.com/github/i2bskn/rack-simple_logger.png)](https://codeclimate.com/github/i2bskn/rack-simple_logger)
7
+
3
8
  Simple logger for rack.
4
9
 
5
10
  ## Installation
@@ -21,12 +21,6 @@ module Rack
21
21
  logger_formatter if @log_type == :logger
22
22
  end
23
23
 
24
- def logger_formatter
25
- @logger.formatter = Proc.new do |severity, datetime, progname, msg|
26
- "#{msg}\n"
27
- end
28
- end
29
-
30
24
  def write(log_hash)
31
25
  send("write_#{@log_type}", log_hash)
32
26
  end
@@ -42,5 +36,12 @@ module Rack
42
36
  def write_other(log_hash)
43
37
  @logger.write log_hash
44
38
  end
39
+
40
+ private
41
+ def logger_formatter
42
+ @logger.formatter = Proc.new do |severity, datetime, progname, msg|
43
+ "#{msg}\n"
44
+ end
45
+ end
45
46
  end
46
47
  end
@@ -1,5 +1,5 @@
1
1
  module Rack
2
2
  class SimpleLogger
3
- VERSION = "0.0.1"
3
+ VERSION = "0.0.2"
4
4
  end
5
5
  end
@@ -21,6 +21,6 @@ Gem::Specification.new do |spec|
21
21
  spec.add_development_dependency "bundler", "~> 1.3"
22
22
  spec.add_development_dependency "rake"
23
23
  spec.add_development_dependency "rspec"
24
-
25
- spec.add_dependency "rack"
24
+ spec.add_development_dependency "rack"
25
+ spec.add_development_dependency "rack-test"
26
26
  end
@@ -0,0 +1,161 @@
1
+ # coding: utf-8
2
+
3
+ require "spec_helper"
4
+
5
+ describe Rack::LogProxy do
6
+ let(:logger_mock) {double("logger mock", class: "Logger").as_null_object}
7
+ let(:io_mock) {double("IO mock", class: "IO").as_null_object}
8
+ let(:mongo_mock) {double("mongo mock", class: "Mongo::Collection").as_null_object}
9
+ let(:custom_mock) {double("custom logger mock", class: "Other").as_null_object}
10
+
11
+
12
+ describe "#initialize" do
13
+ context "with Logger object" do
14
+ let(:proxy) {Rack::LogProxy.new(logger_mock)}
15
+
16
+ it "@logger should be a specified logger" do
17
+ expect(proxy.instance_eval{@logger}).to eq(logger_mock)
18
+ end
19
+
20
+ it "@log_type should be a :logger" do
21
+ expect(proxy.instance_eval{@log_type}).to eq(:logger)
22
+ end
23
+
24
+ it "should call logger_formatter method" do
25
+ Rack::LogProxy.any_instance.should_receive(:logger_formatter)
26
+ expect{proxy}.not_to raise_error
27
+ end
28
+ end
29
+
30
+ context "with String object" do
31
+ before {::Logger.should_receive(:new).with("str").and_return(logger_mock)}
32
+ let(:proxy) {Rack::LogProxy.new("str")}
33
+
34
+ it "create new logger object" do
35
+ expect(proxy.instance_eval{@logger}).to eq(logger_mock)
36
+ end
37
+
38
+ it "@log_type should be a :logger" do
39
+ expect(proxy.instance_eval{@log_type}).to eq(:logger)
40
+ end
41
+
42
+ it "should call logger_formatter method" do
43
+ Rack::LogProxy.any_instance.should_receive(:logger_formatter)
44
+ expect{proxy}.not_to raise_error
45
+ end
46
+ end
47
+
48
+ context "with IO object" do
49
+ before {::Logger.should_receive(:new).with(io_mock).and_return(logger_mock)}
50
+ let(:proxy) {Rack::LogProxy.new(io_mock)}
51
+
52
+ it "create new logger object" do
53
+ expect(proxy.instance_eval{@logger}).to eq(logger_mock)
54
+ end
55
+
56
+ it "@log_type should be a :logger" do
57
+ expect(proxy.instance_eval{@log_type}).to eq(:logger)
58
+ end
59
+
60
+ it "should call logger_formatter method" do
61
+ Rack::LogProxy.any_instance.should_receive(:logger_formatter)
62
+ expect{proxy}.not_to raise_error
63
+ end
64
+ end
65
+
66
+ context "with Mongo::Connection object" do
67
+ let(:proxy) {Rack::LogProxy.new(mongo_mock)}
68
+
69
+ it "@logger should be a connection of mongodb" do
70
+ expect(proxy.instance_eval{@logger}).to eq(mongo_mock)
71
+ end
72
+
73
+ it "@log_type should be a :mongo" do
74
+ expect(proxy.instance_eval{@log_type}).to eq(:mongo)
75
+ end
76
+
77
+ it "should not call logger_formatter method" do
78
+ Rack::LogProxy.any_instance.should_not_receive(:logger_formatter)
79
+ expect{proxy}.not_to raise_error
80
+ end
81
+ end
82
+
83
+ context "with custom logger object" do
84
+ let(:proxy) {Rack::LogProxy.new(custom_mock)}
85
+
86
+ it "@logger should be a custom logger object" do
87
+ expect(proxy.instance_eval{@logger}).to eq(custom_mock)
88
+ end
89
+
90
+ it "@log_type should be a :mongo" do
91
+ expect(proxy.instance_eval{@log_type}).to eq(:other)
92
+ end
93
+
94
+ it "should not call logger_formatter method" do
95
+ Rack::LogProxy.any_instance.should_not_receive(:logger_formatter)
96
+ expect{proxy}.not_to raise_error
97
+ end
98
+ end
99
+ end
100
+
101
+ describe "#write" do
102
+ it "dispatch to write_logger" do
103
+ Rack::LogProxy.any_instance.should_receive(:write_logger)
104
+ expect{Rack::LogProxy.new(logger_mock).write(k: "v")}.not_to raise_error
105
+ end
106
+
107
+ it "dispatch to write_mongo" do
108
+ Rack::LogProxy.any_instance.should_receive(:write_mongo)
109
+ expect{Rack::LogProxy.new(mongo_mock).write(k: "v")}.not_to raise_error
110
+ end
111
+
112
+ it "dispatch to write_other" do
113
+ Rack::LogProxy.any_instance.should_receive(:write_other)
114
+ expect{Rack::LogProxy.new(custom_mock).write(k: "v")}.not_to raise_error
115
+ end
116
+ end
117
+
118
+ describe "#write_logger" do
119
+ it "output ltsv format log" do
120
+ proxy = Rack::LogProxy.new(logger_mock)
121
+ logger_mock.should_receive(:info).with("k1:v1\tk2:v2")
122
+ expect{proxy.write(k1: "v1", k2: "v2")}.not_to raise_error
123
+ end
124
+ end
125
+
126
+ describe "#write_mongo" do
127
+ it "insert log of Hash" do
128
+ proxy = Rack::LogProxy.new(mongo_mock)
129
+ mongo_mock.should_receive(:insert).with(k: "v")
130
+ expect{proxy.write(k: "v")}.not_to raise_error
131
+ end
132
+ end
133
+
134
+ describe "#write_other" do
135
+ it "write custom format log" do
136
+ proxy = Rack::LogProxy.new(custom_mock)
137
+ custom_mock.should_receive(:write).with(k: "v")
138
+ expect{proxy.write(k: "v")}.not_to raise_error
139
+ end
140
+ end
141
+
142
+ describe "#logger_formatter" do
143
+ let(:proxy) {Rack::LogProxy.new(STDOUT)}
144
+
145
+ it "should call logger_formatter method" do
146
+ Rack::LogProxy.any_instance.should_receive(:logger_formatter)
147
+ expect{proxy}.not_to raise_error
148
+ end
149
+
150
+ it "format is the only message" do
151
+ expect(
152
+ proxy.instance_eval{@logger}.formatter.call(
153
+ "severity",
154
+ "datetime",
155
+ "progname",
156
+ "msg"
157
+ )
158
+ ).to eq("msg\n")
159
+ end
160
+ end
161
+ end
@@ -1,3 +1,42 @@
1
1
  # coding: utf-8
2
2
 
3
3
  require "spec_helper"
4
+
5
+ describe Rack::SimpleLogger do
6
+ let(:logger) {double("logger mock", class: "Logger").as_null_object}
7
+ let(:app) {Rack::SimpleLogger.new(TestApp.new, log: logger)}
8
+
9
+ describe "#initialize" do
10
+ it "@app should be a TestApp object" do
11
+ expect(app.instance_eval{@app}.is_a? TestApp).to be_true
12
+ end
13
+
14
+ it "@logger should be a LogPorxy object" do
15
+ expect(app.instance_eval{@logger}.is_a? Rack::LogProxy).to be_true
16
+ end
17
+
18
+ it "@logger is STDOUT if not specified" do
19
+ Rack::LogProxy.should_receive(:new).with(STDOUT)
20
+ Rack::SimpleLogger.new(TestApp.new)
21
+ end
22
+ end
23
+
24
+ describe "#call" do
25
+ it "should call log method" do
26
+ Rack::SimpleLogger.any_instance.should_receive(:log)
27
+ get "/"
28
+ end
29
+ end
30
+
31
+ describe "#log" do
32
+ after {get "/"}
33
+
34
+ it "should call LogProxy#write" do
35
+ Rack::LogProxy.any_instance.should_receive(:write)
36
+ end
37
+
38
+ it "should call logger#info" do
39
+ logger.should_receive(:info)
40
+ end
41
+ end
42
+ end
data/spec/spec_helper.rb CHANGED
@@ -9,7 +9,11 @@ SimpleCov.start do
9
9
  end
10
10
 
11
11
  require "rack/simple_logger"
12
+ require "rack/test"
13
+
14
+ Dir[File.expand_path("../support/*.rb", __FILE__)].each {|f| require f}
12
15
 
13
16
  RSpec.configure do |config|
17
+ config.include Rack::Test::Methods
14
18
  config.order = "random"
15
19
  end
@@ -0,0 +1,11 @@
1
+ # coding: utf-8
2
+
3
+ class TestApp
4
+ def call(env)
5
+ [
6
+ 200,
7
+ {"Content-Type" => "text/plain"},
8
+ ["Hello Rack Middleware"]
9
+ ]
10
+ end
11
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rack-simple_logger
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - i2bskn
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-06-23 00:00:00.000000000 Z
11
+ date: 2013-06-24 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -28,42 +28,56 @@ dependencies:
28
28
  name: rake
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - '>='
31
+ - - ! '>='
32
32
  - !ruby/object:Gem::Version
33
33
  version: '0'
34
34
  type: :development
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - '>='
38
+ - - ! '>='
39
39
  - !ruby/object:Gem::Version
40
40
  version: '0'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: rspec
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - '>='
45
+ - - ! '>='
46
46
  - !ruby/object:Gem::Version
47
47
  version: '0'
48
48
  type: :development
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
- - - '>='
52
+ - - ! '>='
53
53
  - !ruby/object:Gem::Version
54
54
  version: '0'
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: rack
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
- - - '>='
59
+ - - ! '>='
60
60
  - !ruby/object:Gem::Version
61
61
  version: '0'
62
- type: :runtime
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ! '>='
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: rack-test
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ! '>='
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :development
63
77
  prerelease: false
64
78
  version_requirements: !ruby/object:Gem::Requirement
65
79
  requirements:
66
- - - '>='
80
+ - - ! '>='
67
81
  - !ruby/object:Gem::Version
68
82
  version: '0'
69
83
  description: Simple logger for rack
@@ -73,7 +87,9 @@ executables: []
73
87
  extensions: []
74
88
  extra_rdoc_files: []
75
89
  files:
90
+ - .coveralls.yml
76
91
  - .gitignore
92
+ - .travis.yml
77
93
  - Gemfile
78
94
  - LICENSE.txt
79
95
  - README.md
@@ -82,8 +98,10 @@ files:
82
98
  - lib/rack/simple_logger/log_proxy.rb
83
99
  - lib/rack/simple_logger/version.rb
84
100
  - rack-simple_logger.gemspec
101
+ - spec/rack/simple_logger/log_proxy_spec.rb
85
102
  - spec/rack/simple_logger_spec.rb
86
103
  - spec/spec_helper.rb
104
+ - spec/support/test_app.rb
87
105
  homepage: https://github.com/i2bskn/rack-simple_logger
88
106
  licenses:
89
107
  - MIT
@@ -94,20 +112,22 @@ require_paths:
94
112
  - lib
95
113
  required_ruby_version: !ruby/object:Gem::Requirement
96
114
  requirements:
97
- - - '>='
115
+ - - ! '>='
98
116
  - !ruby/object:Gem::Version
99
117
  version: '0'
100
118
  required_rubygems_version: !ruby/object:Gem::Requirement
101
119
  requirements:
102
- - - '>='
120
+ - - ! '>='
103
121
  - !ruby/object:Gem::Version
104
122
  version: '0'
105
123
  requirements: []
106
124
  rubyforge_project:
107
- rubygems_version: 2.0.0
125
+ rubygems_version: 2.0.3
108
126
  signing_key:
109
127
  specification_version: 4
110
128
  summary: Simple logger for rack
111
129
  test_files:
130
+ - spec/rack/simple_logger/log_proxy_spec.rb
112
131
  - spec/rack/simple_logger_spec.rb
113
132
  - spec/spec_helper.rb
133
+ - spec/support/test_app.rb