bogo 0.2.12 → 0.2.14
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 +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
|