bogo 0.2.12 → 0.2.14
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +3 -0
- data/LICENSE +1 -1
- data/README.md +38 -1
- data/bogo.gemspec +17 -16
- data/lib/bogo.rb +12 -11
- data/lib/bogo/logger.rb +85 -0
- data/lib/bogo/version.rb +1 -1
- metadata +17 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 730a00461fb1d2b71a79a959bec8085111781a1ac542443566f875f9c9560e45
|
4
|
+
data.tar.gz: 7225927bd86221c434caf7f9808f87c17c7b71a1e7839ec172157521876bf551
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c3351892aae400d4035470522093bd231f6611d8e955338ac29af84d7ff594b498b863ee63fce80272b42cb3aa3bb4e13e32f3c95f67fe6c66c73ea8ac8cdfed
|
7
|
+
data.tar.gz: a9cac6cfbb9df030f965ca3e6d180343ba8445a1bbffd7ea029b02a45dc05f4846d81211e5ba3c8cbc2a99b83c4683715e3e62179c1e879c9a866502692ca49d
|
data/CHANGELOG.md
CHANGED
data/LICENSE
CHANGED
data/README.md
CHANGED
@@ -376,5 +376,42 @@ between retries at an exponential rate before retry:
|
|
376
376
|
* `:wait_interval` - Numeric (default: 5)
|
377
377
|
* `:wait_exponent` - Numeric (default: 2)
|
378
378
|
|
379
|
+
## `Bogo::Logger`
|
380
|
+
|
381
|
+
This is a wrapped stdlib Logger instance to provide thread-safe
|
382
|
+
access for logging. It includes a `Bogo::Logger#named` method for
|
383
|
+
creating sub-loggers.
|
384
|
+
|
385
|
+
```ruby
|
386
|
+
require 'bogo'
|
387
|
+
|
388
|
+
base = Bogo::Logger.new
|
389
|
+
base.progname = 'base'
|
390
|
+
base.info 'test'
|
391
|
+
|
392
|
+
sub = base.named(:sub)
|
393
|
+
sub.info 'test'
|
394
|
+
```
|
395
|
+
|
396
|
+
### `Bogo::Logger::Helpers`
|
397
|
+
|
398
|
+
Adds a `#logger` method when included which provides access to the
|
399
|
+
global logger. Name can be customized using `.logger_name`.
|
400
|
+
|
401
|
+
```ruby
|
402
|
+
require 'bogo'
|
403
|
+
|
404
|
+
class Fubar
|
405
|
+
class Thing
|
406
|
+
include Bogo::Logger::Helpers
|
407
|
+
logger_name(:thing)
|
408
|
+
|
409
|
+
def test
|
410
|
+
logger.info "test"
|
411
|
+
end
|
412
|
+
end
|
413
|
+
end
|
414
|
+
```
|
415
|
+
|
379
416
|
# Info
|
380
|
-
* Repository: https://github.com/spox/bogo
|
417
|
+
* Repository: https://github.com/spox/bogo
|
data/bogo.gemspec
CHANGED
@@ -1,19 +1,20 @@
|
|
1
|
-
$LOAD_PATH.unshift File.expand_path(File.dirname(__FILE__)) +
|
2
|
-
require
|
1
|
+
$LOAD_PATH.unshift File.expand_path(File.dirname(__FILE__)) + "/lib/"
|
2
|
+
require "bogo/version"
|
3
3
|
Gem::Specification.new do |s|
|
4
|
-
s.name =
|
4
|
+
s.name = "bogo"
|
5
5
|
s.version = Bogo::VERSION.version
|
6
|
-
s.summary =
|
7
|
-
s.author =
|
8
|
-
s.email =
|
9
|
-
s.homepage =
|
10
|
-
s.description =
|
11
|
-
s.require_path =
|
12
|
-
s.license =
|
13
|
-
s.add_runtime_dependency
|
14
|
-
s.add_runtime_dependency
|
15
|
-
s.
|
16
|
-
s.add_development_dependency
|
17
|
-
s.add_development_dependency
|
18
|
-
s.
|
6
|
+
s.summary = "Helper libraries"
|
7
|
+
s.author = "Chris Roberts"
|
8
|
+
s.email = "code@chrisroberts.org"
|
9
|
+
s.homepage = "https://github.com/spox/bogo"
|
10
|
+
s.description = "Helper libraries"
|
11
|
+
s.require_path = "lib"
|
12
|
+
s.license = "Apache 2.0"
|
13
|
+
s.add_runtime_dependency "hashie"
|
14
|
+
s.add_runtime_dependency "multi_json"
|
15
|
+
s.add_runtime_dependency "concurrent-ruby", "~> 1.1.3"
|
16
|
+
s.add_development_dependency "pry"
|
17
|
+
s.add_development_dependency "minitest"
|
18
|
+
s.add_development_dependency "rake", "~> 10"
|
19
|
+
s.files = Dir["lib/**/*"] + %w(bogo.gemspec README.md CHANGELOG.md CONTRIBUTING.md LICENSE)
|
19
20
|
end
|
data/lib/bogo.rb
CHANGED
@@ -1,16 +1,17 @@
|
|
1
|
-
require
|
1
|
+
require "bogo/version"
|
2
2
|
|
3
3
|
module Bogo
|
4
|
-
autoload :AnimalStrings,
|
5
|
-
autoload :Constants,
|
6
|
-
autoload :EphemeralFile,
|
7
|
-
autoload :Lazy,
|
8
|
-
autoload :
|
9
|
-
autoload :
|
10
|
-
autoload :
|
11
|
-
autoload :
|
12
|
-
autoload :
|
4
|
+
autoload :AnimalStrings, "bogo/animal_strings"
|
5
|
+
autoload :Constants, "bogo/constants"
|
6
|
+
autoload :EphemeralFile, "bogo/ephemeral_file"
|
7
|
+
autoload :Lazy, "bogo/lazy"
|
8
|
+
autoload :Logger, "bogo/logger"
|
9
|
+
autoload :Memoization, "bogo/memoization"
|
10
|
+
autoload :PriorityQueue, "bogo/priority_queue"
|
11
|
+
autoload :Retry, "bogo/retry"
|
12
|
+
autoload :Smash, "bogo/smash"
|
13
|
+
autoload :Utility, "bogo/utility"
|
13
14
|
end
|
14
15
|
|
15
16
|
# Always load smash
|
16
|
-
require
|
17
|
+
require "bogo/smash"
|
data/lib/bogo/logger.rb
ADDED
@@ -0,0 +1,85 @@
|
|
1
|
+
require "concurrent"
|
2
|
+
require "logger"
|
3
|
+
|
4
|
+
module Bogo
|
5
|
+
class Logger
|
6
|
+
module Helpers
|
7
|
+
module InstanceMethods
|
8
|
+
def logger
|
9
|
+
self.class.logger
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
13
|
+
module ClassMethods
|
14
|
+
def logger_name(name)
|
15
|
+
@_logger = logger.named(name.to_s)
|
16
|
+
end
|
17
|
+
|
18
|
+
def logger
|
19
|
+
if !@_logger
|
20
|
+
base = Utility.snake(self.name.
|
21
|
+
split("::").first.downcase)
|
22
|
+
@_logger = Bogo::Logger.logger.named(base)
|
23
|
+
end
|
24
|
+
@_logger
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
def self.included(klass)
|
29
|
+
klass.include(InstanceMethods)
|
30
|
+
klass.extend(ClassMethods)
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
# @return [Logger] default logger
|
35
|
+
def self.logger
|
36
|
+
if !@_logger
|
37
|
+
@_logger = new
|
38
|
+
end
|
39
|
+
@_logger
|
40
|
+
end
|
41
|
+
|
42
|
+
# Create a new ::Logger instance wrapped
|
43
|
+
# to allow threaded interactions
|
44
|
+
def initialize(*logger_args)
|
45
|
+
if logger_args.empty?
|
46
|
+
logger_args = [$stderr]
|
47
|
+
end
|
48
|
+
@base_args = logger_args
|
49
|
+
logger = ::Logger.new(*@base_args)
|
50
|
+
logger.level = :fatal
|
51
|
+
@wrapped_logger = Concurrent::MVar.new(logger)
|
52
|
+
end
|
53
|
+
|
54
|
+
# Create a new logger with the sub-name provided
|
55
|
+
#
|
56
|
+
# @param name [String] sub-name for logger
|
57
|
+
# @return [Logger]
|
58
|
+
def named(name)
|
59
|
+
new_name = self.progname.to_s
|
60
|
+
new_name << "." unless new_name.empty?
|
61
|
+
new_name << name
|
62
|
+
new_logger = Logger.new(*@base_args)
|
63
|
+
[:level, :formatter, :datetime_format].each do |m|
|
64
|
+
new_logger.send("#{m}=", self.send(m))
|
65
|
+
end
|
66
|
+
new_logger.progname = new_name
|
67
|
+
new_logger
|
68
|
+
end
|
69
|
+
|
70
|
+
::Logger.instance_methods.each do |l_m|
|
71
|
+
next if l_m.to_s.start_with?("_") || l_m.to_s == "object_id"
|
72
|
+
class_eval <<-EOC
|
73
|
+
def #{l_m}(*ma, &mb)
|
74
|
+
wrapped_logger.borrow { |l| l.send(:#{l_m}, *ma, &mb) }
|
75
|
+
end
|
76
|
+
EOC
|
77
|
+
end
|
78
|
+
|
79
|
+
protected
|
80
|
+
|
81
|
+
def wrapped_logger
|
82
|
+
@wrapped_logger
|
83
|
+
end
|
84
|
+
end
|
85
|
+
end
|
data/lib/bogo/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: bogo
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.14
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Chris Roberts
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-
|
11
|
+
date: 2018-12-08 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: hashie
|
@@ -38,6 +38,20 @@ dependencies:
|
|
38
38
|
- - ">="
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: '0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: concurrent-ruby
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - "~>"
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: 1.1.3
|
48
|
+
type: :runtime
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - "~>"
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: 1.1.3
|
41
55
|
- !ruby/object:Gem::Dependency
|
42
56
|
name: pry
|
43
57
|
requirement: !ruby/object:Gem::Requirement
|
@@ -97,6 +111,7 @@ files:
|
|
97
111
|
- lib/bogo/ephemeral_file.rb
|
98
112
|
- lib/bogo/http_proxy.rb
|
99
113
|
- lib/bogo/lazy.rb
|
114
|
+
- lib/bogo/logger.rb
|
100
115
|
- lib/bogo/memoization.rb
|
101
116
|
- lib/bogo/priority_queue.rb
|
102
117
|
- lib/bogo/retry.rb
|