active_logger 0.1.0 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
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