active_logger 0.1.0 → 0.2.0

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
  SHA256:
3
- metadata.gz: a53153fa5f398f75e6a8585e5783498c10bf297c84ff9c39b16bebd6fd7f3886
4
- data.tar.gz: 0210fc6195bb5b39a03ddb328f87bcf05ef9b8773298a2aef9ffbd3c57f5ca04
3
+ metadata.gz: a1a35016af400de6d23b4b50eee7a458714a0c8b293c7bb6e58cdca42b7f099a
4
+ data.tar.gz: f7803ae045906c0c07146f7d9adb9a619bbac0ace29fcc6b69aa10b783e1ad73
5
5
  SHA512:
6
- metadata.gz: 46610e887005de89191beffdd331fad4c4a3fb9df9a36d16cb2d70ef9ca0004d9767950b42ad35d3288e13b22b7ad4a274578b7664f758d909a83fafe7544403
7
- data.tar.gz: 70daa0ec58408cab9b947b605dbc5a17ed5316db4c48cee433f5b0f6ffc09d9e36f5711f480f126040f4ab49ad8a4eadd612dede491f7cc0d546946972da2986
6
+ metadata.gz: da2ed14c7c27986ac84027907af0edc17c90ed91209657ca2b5b1627e3cd079fafd647504aef5d4aae4b773e7506886f13b089c1c0f5987f0d94cc0c2db5e0dc
7
+ data.tar.gz: 1007b8ecdd143e6822e0296493801768e933aa32791243d8ae1280391c57e7eccc681c112a81d9791c9fad4b068a91c9b031b2be20df79b1e0404f45a64bd0b7
data/.rubocop.yml CHANGED
@@ -11,3 +11,6 @@ Layout/LineLength:
11
11
 
12
12
  Metrics/BlockLength:
13
13
  Enabled: false
14
+
15
+ Metrics/MethodLength:
16
+ Enabled: false
data/.rubocop_todo.yml CHANGED
@@ -1,12 +1,22 @@
1
1
  # This configuration was generated by
2
2
  # `rubocop --auto-gen-config`
3
- # on 2020-04-19 22:24:15 +0300 using RuboCop version 0.82.0.
3
+ # on 2020-04-19 23:21:57 +0300 using RuboCop version 0.82.0.
4
4
  # The point is for the user to remove these configuration records
5
5
  # one by one as the offenses are removed from the code base.
6
6
  # Note that changes in the inspected code, or installation of new
7
7
  # versions of RuboCop, may require this file to be generated again.
8
8
 
9
9
  # Offense count: 1
10
- # Configuration parameters: CountComments, ExcludedMethods.
11
- Metrics/MethodLength:
12
- Max: 12
10
+ Lint/UselessAssignment:
11
+ Exclude:
12
+ - 'lib/active_logger/logger.rb'
13
+
14
+ # Offense count: 1
15
+ # Configuration parameters: IgnoredMethods.
16
+ Metrics/AbcSize:
17
+ Max: 19
18
+
19
+ # Offense count: 1
20
+ # Configuration parameters: IgnoredMethods.
21
+ Metrics/CyclomaticComplexity:
22
+ Max: 7
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- active_logger (0.1.0)
4
+ active_logger (0.2.0)
5
5
  activesupport (>= 5.0.0)
6
6
 
7
7
  GEM
data/README.md CHANGED
@@ -51,6 +51,16 @@ where:
51
51
  * keep - count of files for keeping
52
52
  * size - maximum bytes for one file
53
53
 
54
+ ### Example: Block and multiple appenders
55
+
56
+ ```ruby
57
+ logger = ActiveLogger.new do |al|
58
+ al.appender :stdout
59
+ al.appender :file, filename: 'log/development.log', keep: 30, size: 10
60
+ end
61
+ logger.info 'test'
62
+ ```
63
+
54
64
  ## Development
55
65
 
56
66
  After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake spec` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
@@ -0,0 +1,23 @@
1
+ # frozen_string_literal: true
2
+
3
+ module ActiveLogger #:nodoc:
4
+ module Helpers # :nodoc:
5
+ module Appender #:nodoc:
6
+ extend ActiveSupport::Concern
7
+
8
+ class_methods do
9
+ def appender(type, options = {})
10
+ appenders << loggable(type, options)
11
+ end
12
+
13
+ def appenders
14
+ @appenders ||= []
15
+ end
16
+
17
+ private
18
+
19
+ def reset!; end
20
+ end
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,15 @@
1
+ # frozen_string_literal: true
2
+
3
+ module ActiveLogger #:nodoc:
4
+ module Helpers # :nodoc:
5
+ module Base #:nodoc:
6
+ extend ActiveSupport::Concern
7
+
8
+ class_methods do
9
+ private
10
+
11
+ def reset!; end
12
+ end
13
+ end
14
+ end
15
+ end
@@ -2,30 +2,51 @@
2
2
 
3
3
  module ActiveLogger
4
4
  module Logger # :nodoc:
5
- class AdapterNotFound < StandardError; end
5
+ module_function
6
6
 
7
- class << self
8
- def new(*args, &_block)
9
- # extract options
10
- options = args.last.is_a?(Hash) ? args.pop : {}
7
+ include ActiveLogger::Helpers::Base
8
+ include ActiveLogger::Helpers::Appender
11
9
 
12
- setup(args.first, options)
10
+ class AppenderNotFound < StandardError; end
11
+ class FilenameNotSpecified < StandardError; end
12
+
13
+ def new(*args, &block)
14
+ # extract options
15
+ options = args.last.is_a?(Hash) ? args.pop : {}
16
+
17
+ reset!
18
+
19
+ if block_given?
20
+ block.arity.positive? ? block.call(self) : instance_eval(&block)
21
+ else
22
+ type = args.first
23
+ appender(type, options)
13
24
  end
14
25
 
15
- def setup(type, options)
16
- case type
17
- when :stdout, STDOUT
18
- ActiveSupport::Logger.new(STDOUT)
19
- when :stderr, STDERR
20
- ActiveSupport::Logger.new(STDERR)
21
- when String, Pathname
22
- ActiveSupport::Logger.new(type.to_s, options[:keep], options[:size])
23
- when :file
24
- ActiveSupport::Logger.new(options[:filename], options[:keep], options[:size])
25
- else
26
- raise AdapterNotFound
27
- end
26
+ assign_appenders = appenders.drop(1)
27
+ assign_appenders.inject(appenders[0]) { |appender, acc| acc.extend(ActiveSupport::Logger.broadcast(appender)) }
28
+ end
29
+
30
+ def loggable(type, options = {})
31
+ parameters = []
32
+
33
+ case type
34
+ when :stdout, STDOUT
35
+ parameters << STDOUT
36
+ when :stderr, STDERR
37
+ parameters << STDERR
38
+ when String, Pathname
39
+ parameters = [type.to_s, options[:keep], options[:size]]
40
+ when :file
41
+ raise FilenameNotSpecified if options[:filename].nil?
42
+
43
+ parameters = [options[:filename], options[:keep], options[:size]]
44
+ else
45
+ raise AppenderNotFound
28
46
  end
47
+
48
+ logger = ActiveSupport::Logger.new(*parameters)
49
+ logger
29
50
  end
30
51
  end
31
52
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module ActiveLogger
4
- VERSION = '0.1.0'
4
+ VERSION = '0.2.0'
5
5
  end
data/lib/active_logger.rb CHANGED
@@ -1,13 +1,18 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require 'active_support/concern'
3
4
  require 'active_support/logger'
4
5
 
5
6
  module ActiveLogger # :nodoc:
6
- class << self
7
- def new(*args, &block)
8
- ActiveLogger::Logger.new(*args, &block)
9
- end
7
+ module_function
8
+
9
+ def new(*args, &block)
10
+ ActiveLogger::Logger.new(*args, &block)
10
11
  end
11
12
  end
12
13
 
14
+ # Helpers
15
+ require File.dirname(__FILE__) + '/active_logger/helpers/base'
16
+ require File.dirname(__FILE__) + '/active_logger/helpers/appender'
17
+
13
18
  require File.dirname(__FILE__) + '/active_logger/logger'
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: active_logger
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Yury Snegirev
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2020-04-19 00:00:00.000000000 Z
11
+ date: 2020-04-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -46,6 +46,8 @@ files:
46
46
  - bin/console
47
47
  - bin/setup
48
48
  - lib/active_logger.rb
49
+ - lib/active_logger/helpers/appender.rb
50
+ - lib/active_logger/helpers/base.rb
49
51
  - lib/active_logger/logger.rb
50
52
  - lib/active_logger/version.rb
51
53
  - log/.keep