void_logger 0.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 +15 -0
- data/.gitignore +14 -0
- data/.rvmrc +1 -0
- data/Gemfile +4 -0
- data/LICENSE.txt +22 -0
- data/README.md +75 -0
- data/Rakefile +8 -0
- data/lib/void_logger.rb +28 -0
- data/test/minitest_helper.rb +5 -0
- data/test/test_void_logger.rb +64 -0
- data/void_logger.gemspec +30 -0
- metadata +103 -0
checksums.yaml
ADDED
@@ -0,0 +1,15 @@
|
|
1
|
+
---
|
2
|
+
!binary "U0hBMQ==":
|
3
|
+
metadata.gz: !binary |-
|
4
|
+
NjE1N2IxN2IxM2NjNDM0ZWFlOThiZTYwMGNhZjk0MTE2OGVjMzllMQ==
|
5
|
+
data.tar.gz: !binary |-
|
6
|
+
MTYxYWMzODRiZWJhYjY1YzNkOWRjMTc0ZGI2ODlhM2JhNjM5MTUwNQ==
|
7
|
+
SHA512:
|
8
|
+
metadata.gz: !binary |-
|
9
|
+
MGQxNDBhMDljNGE3YTg0ZTAxOWRlMTFiOTRjYzU3M2VhNTUwNDM2MWEyMzY1
|
10
|
+
MTY5MWNjNTMyZTJhZTEyODhiOTIzMmE1NDJjOGY5NzBmNjdhNTkzYzQxMzQx
|
11
|
+
NDAzNGQ3YmRlMTc2ZWIyODM1MTU2YWJkOGZjMGI5ZWVlZTdkOTk=
|
12
|
+
data.tar.gz: !binary |-
|
13
|
+
NjE0OTRiNzQxMWY4OWJlZDBiZDNlNGM4ZjhiNTAxODYwNmMyMjEzNzU5NDEz
|
14
|
+
YzQzOGY1MGZlYjk3NDVkOTM0NDNjZGU5ZWUwZTU5NTVmOWY3ODliYTA4YWU3
|
15
|
+
NWQ1YTUyNzUxYTA4NGYyY2Y3MmIwZTZlODE2MWExMTZjY2Y2MjU=
|
data/.gitignore
ADDED
data/.rvmrc
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
rvm --create use 1.9.3@void_logger
|
data/Gemfile
ADDED
data/LICENSE.txt
ADDED
@@ -0,0 +1,22 @@
|
|
1
|
+
Copyright (c) 2015 Denis Jean
|
2
|
+
|
3
|
+
MIT License
|
4
|
+
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
6
|
+
a copy of this software and associated documentation files (the
|
7
|
+
"Software"), to deal in the Software without restriction, including
|
8
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
9
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
10
|
+
permit persons to whom the Software is furnished to do so, subject to
|
11
|
+
the following conditions:
|
12
|
+
|
13
|
+
The above copyright notice and this permission notice shall be
|
14
|
+
included in all copies or substantial portions of the Software.
|
15
|
+
|
16
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
17
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
18
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
19
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
20
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
21
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
22
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/README.md
ADDED
@@ -0,0 +1,75 @@
|
|
1
|
+
# VoidLogger
|
2
|
+
|
3
|
+
VoidLogger is a Ruby logger that logs into nothing, void or still nowhere.
|
4
|
+
|
5
|
+
## Purpose
|
6
|
+
|
7
|
+
A VoidLogger instance is useful when you want to log things in your class or module but do not necessarily want those traces to go somewhere. Replace the current logger with a VoidLogger instance and nobody will hear your code scream.
|
8
|
+
|
9
|
+
The VoidLogger::LoggerMixin module comes in support of this approach. Once included in a module or class, it defines a logger attribute initialized to a VoidLogger instance. Later on, you can use a different logger simply by assigning this logger attribute with your own ::Logger variant.
|
10
|
+
|
11
|
+
## Installation
|
12
|
+
|
13
|
+
Add this line to your application's Gemfile:
|
14
|
+
|
15
|
+
```ruby
|
16
|
+
gem 'void_logger'
|
17
|
+
```
|
18
|
+
|
19
|
+
And then execute:
|
20
|
+
|
21
|
+
$ bundle
|
22
|
+
|
23
|
+
Or install it yourself as:
|
24
|
+
|
25
|
+
$ gem install void_logger
|
26
|
+
|
27
|
+
## Usage
|
28
|
+
|
29
|
+
Start by requiring the gem:
|
30
|
+
|
31
|
+
```ruby
|
32
|
+
require 'void_logger'
|
33
|
+
```
|
34
|
+
|
35
|
+
Then you can use the logger:
|
36
|
+
|
37
|
+
```ruby
|
38
|
+
logger = VoidLogger.new
|
39
|
+
logger.info "TEST" # nothing will be logged
|
40
|
+
```
|
41
|
+
|
42
|
+
You can also include the mixin in your module/class:
|
43
|
+
|
44
|
+
```ruby
|
45
|
+
require 'void_logger'
|
46
|
+
|
47
|
+
class Test
|
48
|
+
include VoidLogger::LoggerMixin
|
49
|
+
|
50
|
+
def initialize(logger=nil)
|
51
|
+
self.logger = logger
|
52
|
+
end
|
53
|
+
end
|
54
|
+
```
|
55
|
+
|
56
|
+
This mixin brings two members to your module/class:
|
57
|
+
- logger: It will look up all the ancestors to find a logger method and use it if it finds one or return a VoidLogger.new
|
58
|
+
- fallback_logger: The logger you can use in the class you mix VoidLogger::LoggerMixin into. Return the fallback logger (as defined above) unless you explicitly set a logger with the logger= method.
|
59
|
+
|
60
|
+
You can reset the fallback logger by calling:
|
61
|
+
|
62
|
+
```ruby
|
63
|
+
t = Test.new
|
64
|
+
t.reset_fallback_logger
|
65
|
+
```
|
66
|
+
|
67
|
+
Resetting the fallback logger can be useful when a new logger was defined on one of the ancestors.
|
68
|
+
|
69
|
+
## Contributing
|
70
|
+
|
71
|
+
1. Fork it ( https://github.com/[my-github-username]/void_logger/fork )
|
72
|
+
2. Create your feature branch (`git checkout -b my-new-feature`)
|
73
|
+
3. Commit your changes (`git commit -am 'Add some feature'`)
|
74
|
+
4. Push to the branch (`git push origin my-new-feature`)
|
75
|
+
5. Create a new Pull Request
|
data/Rakefile
ADDED
data/lib/void_logger.rb
ADDED
@@ -0,0 +1,28 @@
|
|
1
|
+
require 'logger'
|
2
|
+
|
3
|
+
class VoidLogger < ::Logger
|
4
|
+
VERSION = "0.1"
|
5
|
+
|
6
|
+
def initialize(logdev=nil)
|
7
|
+
super(logdev)
|
8
|
+
end
|
9
|
+
|
10
|
+
def add(severity, message = nil, progname = nil, &block)
|
11
|
+
return true
|
12
|
+
end
|
13
|
+
|
14
|
+
module LoggerMixin
|
15
|
+
|
16
|
+
attr_writer :logger
|
17
|
+
attr_reader :fallback_logger
|
18
|
+
|
19
|
+
def logger
|
20
|
+
@fallback_logger ||= (super rescue nil) || VoidLogger.new
|
21
|
+
@logger || @fallback_logger
|
22
|
+
end
|
23
|
+
|
24
|
+
def reset_fallback_logger
|
25
|
+
@fallback_logger = nil
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
@@ -0,0 +1,64 @@
|
|
1
|
+
require 'minitest_helper'
|
2
|
+
require 'logger'
|
3
|
+
|
4
|
+
LOG_FILE_NAME = 'test/logfile.log'
|
5
|
+
LOGGER = Logger.new LOG_FILE_NAME
|
6
|
+
|
7
|
+
class TestVoidLogger < Minitest::Test
|
8
|
+
def setup
|
9
|
+
@filepath = LOG_FILE_NAME
|
10
|
+
end
|
11
|
+
|
12
|
+
def teardown
|
13
|
+
FileUtils.rm @filepath, force: true
|
14
|
+
end
|
15
|
+
|
16
|
+
def test_nothing_logged
|
17
|
+
logger = VoidLogger.new(@filepath)
|
18
|
+
logger.info "Should not be logged"
|
19
|
+
|
20
|
+
string = File.read(@filepath)
|
21
|
+
assert !string.include?("Should not be logged")
|
22
|
+
end
|
23
|
+
|
24
|
+
def test_logger_mixin
|
25
|
+
b = B.new
|
26
|
+
|
27
|
+
assert b.logger.is_a?(VoidLogger)
|
28
|
+
|
29
|
+
b = B.new(true)
|
30
|
+
assert_equal LOGGER, b.logger
|
31
|
+
|
32
|
+
b.remove_logger
|
33
|
+
b.reset_fallback_logger
|
34
|
+
assert b.logger.is_a?(VoidLogger)
|
35
|
+
|
36
|
+
b.logger = LOGGER
|
37
|
+
assert_equal LOGGER, b.logger
|
38
|
+
|
39
|
+
b.logger = nil
|
40
|
+
assert b.logger.is_a?(VoidLogger)
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
class A
|
45
|
+
def initialize(log=false)
|
46
|
+
if log
|
47
|
+
self.class.send(:define_method, :logger) do
|
48
|
+
LOGGER
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
53
|
+
def remove_logger
|
54
|
+
self.class.send(:remove_method, :logger)
|
55
|
+
end
|
56
|
+
end
|
57
|
+
|
58
|
+
class B < A
|
59
|
+
include VoidLogger::LoggerMixin
|
60
|
+
|
61
|
+
def initialize(log=false)
|
62
|
+
super(log)
|
63
|
+
end
|
64
|
+
end
|
data/void_logger.gemspec
ADDED
@@ -0,0 +1,30 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
lib = File.expand_path('../lib', __FILE__)
|
3
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
+
require 'void_logger'
|
5
|
+
|
6
|
+
Gem::Specification.new do |spec|
|
7
|
+
spec.name = "void_logger"
|
8
|
+
spec.version = VoidLogger::VERSION
|
9
|
+
spec.authors = ["Denis Jean", "Laurent Farcy"]
|
10
|
+
spec.email = ["denis.jean@ecairn.com", "laurent.farcy@ecairn.com"]
|
11
|
+
spec.summary = %q{VoidLogger is a Ruby logger that logs into the void.}
|
12
|
+
|
13
|
+
spec.description = <<-EOF
|
14
|
+
A VoidLogger instance is useful when you want to log things in
|
15
|
+
your class or module but do not necessarily want those traces to go somewhere.
|
16
|
+
Replace the current logger with a VoidLogger instance and nobody will hear your code scream.
|
17
|
+
EOF
|
18
|
+
|
19
|
+
spec.homepage = "https://github.com/ecairn/void_logger"
|
20
|
+
spec.license = "MIT"
|
21
|
+
|
22
|
+
spec.files = `git ls-files -z`.split("\x0")
|
23
|
+
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
24
|
+
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
25
|
+
spec.require_paths = ["lib"]
|
26
|
+
|
27
|
+
spec.add_development_dependency "bundler", "~> 1.7"
|
28
|
+
spec.add_development_dependency "rake", "~> 10.0"
|
29
|
+
spec.add_development_dependency "minitest", "~> 5.5"
|
30
|
+
end
|
metadata
ADDED
@@ -0,0 +1,103 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: void_logger
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: '0.1'
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Denis Jean
|
8
|
+
- Laurent Farcy
|
9
|
+
autorequire:
|
10
|
+
bindir: bin
|
11
|
+
cert_chain: []
|
12
|
+
date: 2015-03-27 00:00:00.000000000 Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
name: bundler
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
17
|
+
requirements:
|
18
|
+
- - ~>
|
19
|
+
- !ruby/object:Gem::Version
|
20
|
+
version: '1.7'
|
21
|
+
type: :development
|
22
|
+
prerelease: false
|
23
|
+
version_requirements: !ruby/object:Gem::Requirement
|
24
|
+
requirements:
|
25
|
+
- - ~>
|
26
|
+
- !ruby/object:Gem::Version
|
27
|
+
version: '1.7'
|
28
|
+
- !ruby/object:Gem::Dependency
|
29
|
+
name: rake
|
30
|
+
requirement: !ruby/object:Gem::Requirement
|
31
|
+
requirements:
|
32
|
+
- - ~>
|
33
|
+
- !ruby/object:Gem::Version
|
34
|
+
version: '10.0'
|
35
|
+
type: :development
|
36
|
+
prerelease: false
|
37
|
+
version_requirements: !ruby/object:Gem::Requirement
|
38
|
+
requirements:
|
39
|
+
- - ~>
|
40
|
+
- !ruby/object:Gem::Version
|
41
|
+
version: '10.0'
|
42
|
+
- !ruby/object:Gem::Dependency
|
43
|
+
name: minitest
|
44
|
+
requirement: !ruby/object:Gem::Requirement
|
45
|
+
requirements:
|
46
|
+
- - ~>
|
47
|
+
- !ruby/object:Gem::Version
|
48
|
+
version: '5.5'
|
49
|
+
type: :development
|
50
|
+
prerelease: false
|
51
|
+
version_requirements: !ruby/object:Gem::Requirement
|
52
|
+
requirements:
|
53
|
+
- - ~>
|
54
|
+
- !ruby/object:Gem::Version
|
55
|
+
version: '5.5'
|
56
|
+
description: ! " A VoidLogger instance is useful when you want to log things in\n
|
57
|
+
\ your class or module but do not necessarily want those traces to go somewhere.\n
|
58
|
+
\ Replace the current logger with a VoidLogger instance and nobody will hear your
|
59
|
+
code scream.\n"
|
60
|
+
email:
|
61
|
+
- denis.jean@ecairn.com
|
62
|
+
- laurent.farcy@ecairn.com
|
63
|
+
executables: []
|
64
|
+
extensions: []
|
65
|
+
extra_rdoc_files: []
|
66
|
+
files:
|
67
|
+
- .gitignore
|
68
|
+
- .rvmrc
|
69
|
+
- Gemfile
|
70
|
+
- LICENSE.txt
|
71
|
+
- README.md
|
72
|
+
- Rakefile
|
73
|
+
- lib/void_logger.rb
|
74
|
+
- test/minitest_helper.rb
|
75
|
+
- test/test_void_logger.rb
|
76
|
+
- void_logger.gemspec
|
77
|
+
homepage: https://github.com/ecairn/void_logger
|
78
|
+
licenses:
|
79
|
+
- MIT
|
80
|
+
metadata: {}
|
81
|
+
post_install_message:
|
82
|
+
rdoc_options: []
|
83
|
+
require_paths:
|
84
|
+
- lib
|
85
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - ! '>='
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: '0'
|
90
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
91
|
+
requirements:
|
92
|
+
- - ! '>='
|
93
|
+
- !ruby/object:Gem::Version
|
94
|
+
version: '0'
|
95
|
+
requirements: []
|
96
|
+
rubyforge_project:
|
97
|
+
rubygems_version: 2.4.3
|
98
|
+
signing_key:
|
99
|
+
specification_version: 4
|
100
|
+
summary: VoidLogger is a Ruby logger that logs into the void.
|
101
|
+
test_files:
|
102
|
+
- test/minitest_helper.rb
|
103
|
+
- test/test_void_logger.rb
|