memolog 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: 6bd5031cdc39d67fc6409bbe9d71028129040f13abd8f30445e5b0c4f090a005
4
- data.tar.gz: 8d5e0699f794abd16aa2a2e11562085d538581c567af030bf7d3bd0e3e9bd304
3
+ metadata.gz: a0f3276d2ccd3726c5e46dee8275cee70124955d9b8764e371097324a4643713
4
+ data.tar.gz: c6ca8429d029135ba450f232d80a1406d4256a03193705ead871d39e7800698a
5
5
  SHA512:
6
- metadata.gz: a894bc14c69acadbacd0dded2ea7ce4d04f2e607e19ecec70c570160976a0c79b8a9513b1024e305066bf4490e84ac8cc2927cf7a096e9df80cde82fe5f2fabe
7
- data.tar.gz: 0415da3006d84de2b1804d3b2ac7e26d8f793617861a22c0a6eb71291c2d1071ff021b4859b9ee53d23b609bf66aaa4e7cef5e338d6fb9e6fb708fa874f5f197
6
+ metadata.gz: 706306f7722c755d2df86f76141a102d9da097b8bab2b64830fc1381652c64da5ba45bba31ed696773f641f4864bd2d1c06a91e191bfe1e4ea0192d3e56c0eac
7
+ data.tar.gz: 2136479ffe04455d9a56ba52fce097a182deb65c924a7a9f1a18e653eb49419a2063c895f72242c1ee581596bc95688f8f0759de175e3c7819e3e91346041ffe
data/CHANGELOG.md CHANGED
@@ -1,5 +1,9 @@
1
- ## [Unreleased]
1
+ ## 0.2.0
2
2
 
3
- ## [0.1.0] - 2021-09-27
3
+ - Uprade gem due [CVE-2021-41098](https://github.com/advisories/GHSA-2rr5-8q37-2w7h)
4
+ - Add initializers config option, available initializers are [rails, sentry, sidekiq].
5
+ - Move debug option to config.
6
+
7
+ ## 0.1.0
4
8
 
5
9
  - Test version for publish and test workflow.
data/Gemfile CHANGED
@@ -4,3 +4,11 @@ source "https://rubygems.org"
4
4
 
5
5
  # Specify your gem's dependencies in memolog.gemspec
6
6
  gemspec
7
+
8
+ gem "pry"
9
+ gem "rails"
10
+ gem "rake"
11
+ gem "rspec"
12
+ gem "rubocop-config-umbrellio"
13
+ gem "sentry-ruby"
14
+ gem "sidekiq"
data/Gemfile.lock CHANGED
@@ -1,9 +1,9 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- memolog (0.1.0)
5
- logger
6
- securerandom
4
+ memolog (0.2.0)
5
+ logger (~> 1.4.3)
6
+ securerandom (~> 0.1.0)
7
7
 
8
8
  GEM
9
9
  remote: https://rubygems.org/
@@ -110,9 +110,9 @@ GEM
110
110
  minitest (5.14.4)
111
111
  multipart-post (2.1.1)
112
112
  nio4r (2.5.8)
113
- nokogiri (1.12.4-x86_64-darwin)
113
+ nokogiri (1.12.5-x86_64-darwin)
114
114
  racc (~> 1.4)
115
- nokogiri (1.12.4-x86_64-linux)
115
+ nokogiri (1.12.5-x86_64-linux)
116
116
  racc (~> 1.4)
117
117
  parallel (1.21.0)
118
118
  parser (3.0.2.0)
@@ -177,7 +177,7 @@ GEM
177
177
  rubocop-ast (>= 1.7.0, < 2.0)
178
178
  ruby-progressbar (~> 1.7)
179
179
  unicode-display_width (>= 1.4.0, < 3.0)
180
- rubocop-ast (1.11.0)
180
+ rubocop-ast (1.12.0)
181
181
  parser (>= 3.0.1.1)
182
182
  rubocop-config-umbrellio (1.17.0.53)
183
183
  rubocop (= 1.17.0)
data/README.md CHANGED
@@ -20,10 +20,40 @@ Or install it yourself as:
20
20
 
21
21
  $ gem install memolog
22
22
 
23
+ ## Configuration
24
+
25
+ Use this example during application initialization process (this example implement default values):
26
+
27
+ ```ruby
28
+ Memolog.configure do |config|
29
+ config.debug = false
30
+ config.formatter = ::Memolog::Formatter.new
31
+ config.initializers = %i[rails sentry sidekiq]
32
+ config.log_size_limit = 50_000
33
+ config.sentry_key = :memolog
34
+ config.uuid_callable = -> { SecureRandom.uuid }
35
+ end
36
+
37
+ Memolog.init!
38
+ ```
39
+
40
+ Available options are:
41
+ - `debug` - set it to true if you need to leave Memolog.dump result outside `Memolog.run {}` block.
42
+ - `formatter` - setup your own formatter.
43
+ - `initializers` - define here what you want to initialize in `#init!` call.
44
+ - `log_size_limit` - max log length in Sentry event.
45
+ - `sentry_key` - key name in Sentry extra object.
46
+ - `uuid_callable` - Memolog add unique value to logs, here you can redefine uuid generation.
47
+
23
48
  ## Usage
24
49
 
50
+ Please call `Memolog.extend_logger(Rails.logger)` or any other logger you want to collect.
51
+ After that when error occured you can check your Sentry report and see `memolog` section with all
52
+ logs collected before error. Also there will be unique identifier to find logs behaviour on your
53
+ server or log collection system.
54
+
25
55
  Memolog has init code for Rails (Middleware), Sentry (Extension) and Sidekiq (Middleware).
26
- It implement all hacks on the load process.
56
+ It implement all hacks on the `Memolog.init!` call.
27
57
  Also you can add `Memolog.run {}` around logs you want to collect and release it with `Memolog.dump`
28
58
  inside this block.
29
59
 
@@ -1,10 +1,19 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- Memolog::Config = Struct.new(:formatter, :uuid_callable, :sentry_key, :log_size_limit) do
3
+ Memolog::Config = Struct.new(
4
+ :debug,
5
+ :formatter,
6
+ :initializers,
7
+ :log_size_limit,
8
+ :sentry_key,
9
+ :uuid_callable,
10
+ ) do
4
11
  def initialize
12
+ self.debug = false
5
13
  self.formatter = ::Memolog::Formatter.new
6
- self.uuid_callable = -> { SecureRandom.uuid }
7
- self.sentry_key = :memolog
14
+ self.initializers = %i[rails sentry sidekiq]
8
15
  self.log_size_limit = 50_000
16
+ self.sentry_key = :memolog
17
+ self.uuid_callable = -> { SecureRandom.uuid }
9
18
  end
10
19
  end
data/lib/memolog/init.rb CHANGED
@@ -1,17 +1,31 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- if defined?(Rails::Railtie)
4
- require "memolog/railtie"
5
- end
3
+ class Memolog::Init
4
+ def call
5
+ init_rails!
6
+ init_sentry!
7
+ init_sidekiq!
8
+ end
6
9
 
7
- if defined?(Sentry::Scope)
8
- Sentry::Scope.prepend(Memolog::SentryScopeExtension)
9
- end
10
+ private
11
+
12
+ def init_rails!
13
+ return unless defined?(Rails) && Memolog.config.initializers.include?(:rails)
14
+ require "memolog/railtie"
15
+ end
16
+
17
+ def init_sentry!
18
+ return unless defined?(Sentry::Scope) && Memolog.config.initializers.include?(:sentry)
19
+ Sentry::Scope.prepend(Memolog::SentryScopeExtension)
20
+ end
21
+
22
+ def init_sidekiq!
23
+ return unless defined?(Sidekiq) && Memolog.config.initializers.include?(:sidekiq)
10
24
 
11
- if defined?(Sidekiq)
12
- Sidekiq.configure_server do |config|
13
- config.server_middleware do |chain|
14
- chain.prepend(Memolog::SentrySidekiqMiddleware)
25
+ Sidekiq.configure_server do |config|
26
+ config.server_middleware do |chain|
27
+ chain.prepend(Memolog::SentrySidekiqMiddleware)
28
+ end
15
29
  end
16
30
  end
17
31
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Memolog
4
- VERSION = "0.1.0"
4
+ VERSION = "0.2.0"
5
5
  end
data/lib/memolog.rb CHANGED
@@ -2,52 +2,55 @@
2
2
 
3
3
  require "logger"
4
4
  require "securerandom"
5
+ require "stringio"
6
+
7
+ require "memolog/version"
8
+ require "memolog/config"
9
+ require "memolog/extension"
10
+ require "memolog/formatter"
11
+ require "memolog/init"
12
+ require "memolog/middleware"
13
+ require "memolog/sentry_scope_extension"
14
+ require "memolog/sentry_sidekiq_middleware"
5
15
 
6
16
  module Memolog
7
17
  extend self
8
18
 
9
- autoload :VERSION, "memolog/version"
10
- autoload :Config, "memolog/config"
11
- autoload :Extension, "memolog/extension"
12
- autoload :Formatter, "memolog/formatter"
13
- autoload :Middleware, "memolog/middleware"
14
- autoload :SentryScopeExtension, "memolog/sentry_scope_extension"
15
- autoload :SentrySidekiqMiddleware, "memolog/sentry_sidekiq_middleware"
19
+ attr_accessor :config, :logdevs
16
20
 
17
- attr_accessor :debug, :logdevs
18
-
19
- self.debug = false
20
- self.logdevs = []
21
+ @config = Memolog::Config.new
22
+ @logdevs = []
21
23
 
22
24
  def configure
23
- @config ||= Memolog::Config.new
24
- yield(@config) if block_given?
25
- @config
25
+ yield(config) if block_given?
26
+ end
27
+
28
+ def init!
29
+ Memolog::Init.new.call
26
30
  end
27
- alias config configure
28
31
 
29
32
  def extend_logger(other_logger)
30
33
  other_logger.extend(Memolog::Extension)
31
34
  other_logger.formatter = config.formatter
32
35
  end
33
36
 
34
- def logger
35
- Thread.current[:memolog_logger] ||= Logger.new(nil, formatter: config.formatter)
36
- end
37
-
38
37
  def uuid
39
38
  Thread.current[:memolog_uuid]
40
39
  end
41
40
 
41
+ def logger
42
+ Thread.current[:memolog_logger] ||= Logger.new(nil, formatter: config.formatter)
43
+ end
44
+
42
45
  def run
43
- Thread.current[:memolog_uuid] = Memolog.config.uuid_callable.call
46
+ Thread.current[:memolog_uuid] = config.uuid_callable.call
44
47
 
45
48
  logdevs.push(StringIO.new)
46
49
  logger.instance_variable_set(:@logdev, logdevs.last)
47
50
 
48
51
  yield
49
52
  ensure
50
- logdevs.pop unless debug
53
+ logdevs.pop unless config.debug
51
54
  end
52
55
 
53
56
  def dump
@@ -59,5 +62,3 @@ module Memolog
59
62
  logdevs.last.string.slice(beginning, config.log_size_limit)
60
63
  end
61
64
  end
62
-
63
- require "memolog/init"
metadata CHANGED
@@ -1,141 +1,43 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: memolog
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
  - Stepan Kirushkin
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-09-27 00:00:00.000000000 Z
11
+ date: 2021-09-28 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: logger
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - ">="
17
+ - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '0'
19
+ version: 1.4.3
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - ">="
24
+ - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: '0'
26
+ version: 1.4.3
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: securerandom
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - ">="
31
+ - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: '0'
33
+ version: 0.1.0
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - ">="
38
+ - - "~>"
39
39
  - !ruby/object:Gem::Version
40
- version: '0'
41
- - !ruby/object:Gem::Dependency
42
- name: pry
43
- requirement: !ruby/object:Gem::Requirement
44
- requirements:
45
- - - ">="
46
- - !ruby/object:Gem::Version
47
- version: '0'
48
- type: :development
49
- prerelease: false
50
- version_requirements: !ruby/object:Gem::Requirement
51
- requirements:
52
- - - ">="
53
- - !ruby/object:Gem::Version
54
- version: '0'
55
- - !ruby/object:Gem::Dependency
56
- name: rails
57
- requirement: !ruby/object:Gem::Requirement
58
- requirements:
59
- - - ">="
60
- - !ruby/object:Gem::Version
61
- version: '0'
62
- type: :development
63
- prerelease: false
64
- version_requirements: !ruby/object:Gem::Requirement
65
- requirements:
66
- - - ">="
67
- - !ruby/object:Gem::Version
68
- version: '0'
69
- - !ruby/object:Gem::Dependency
70
- name: rake
71
- requirement: !ruby/object:Gem::Requirement
72
- requirements:
73
- - - ">="
74
- - !ruby/object:Gem::Version
75
- version: '0'
76
- type: :development
77
- prerelease: false
78
- version_requirements: !ruby/object:Gem::Requirement
79
- requirements:
80
- - - ">="
81
- - !ruby/object:Gem::Version
82
- version: '0'
83
- - !ruby/object:Gem::Dependency
84
- name: rspec
85
- requirement: !ruby/object:Gem::Requirement
86
- requirements:
87
- - - ">="
88
- - !ruby/object:Gem::Version
89
- version: '0'
90
- type: :development
91
- prerelease: false
92
- version_requirements: !ruby/object:Gem::Requirement
93
- requirements:
94
- - - ">="
95
- - !ruby/object:Gem::Version
96
- version: '0'
97
- - !ruby/object:Gem::Dependency
98
- name: rubocop-config-umbrellio
99
- requirement: !ruby/object:Gem::Requirement
100
- requirements:
101
- - - ">="
102
- - !ruby/object:Gem::Version
103
- version: '0'
104
- type: :development
105
- prerelease: false
106
- version_requirements: !ruby/object:Gem::Requirement
107
- requirements:
108
- - - ">="
109
- - !ruby/object:Gem::Version
110
- version: '0'
111
- - !ruby/object:Gem::Dependency
112
- name: sentry-ruby
113
- requirement: !ruby/object:Gem::Requirement
114
- requirements:
115
- - - ">="
116
- - !ruby/object:Gem::Version
117
- version: '0'
118
- type: :development
119
- prerelease: false
120
- version_requirements: !ruby/object:Gem::Requirement
121
- requirements:
122
- - - ">="
123
- - !ruby/object:Gem::Version
124
- version: '0'
125
- - !ruby/object:Gem::Dependency
126
- name: sidekiq
127
- requirement: !ruby/object:Gem::Requirement
128
- requirements:
129
- - - ">="
130
- - !ruby/object:Gem::Version
131
- version: '0'
132
- type: :development
133
- prerelease: false
134
- version_requirements: !ruby/object:Gem::Requirement
135
- requirements:
136
- - - ">="
137
- - !ruby/object:Gem::Version
138
- version: '0'
40
+ version: 0.1.0
139
41
  description: |2
140
42
  Memolog is an in-memory logger, which extend any other logger.
141
43
  Designed to work with Sentry.
@@ -173,7 +75,7 @@ licenses:
173
75
  metadata:
174
76
  homepage_uri: https://github.com/skirushkin/memolog
175
77
  source_code_uri: https://github.com/skirushkin/memolog
176
- changelog_uri: https://github.com/skirushkin/memolog
78
+ changelog_uri: https://github.com/skirushkin/memolog/blob/master/CHANGELOG.md
177
79
  post_install_message:
178
80
  rdoc_options: []
179
81
  require_paths: