slack_webhook_logger 0.1.0 → 0.3.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: 6a171da397b47aa75106d933b8569c53c2e4030c8f2e862a5e97619b76930a1c
4
- data.tar.gz: d356b7f9f480004281b65b8531520f94de86edef6d25304e0cf4cf4fb2528070
3
+ metadata.gz: 6ecc18a809cc554fe9a8f5f071a55967fa16fbda0ab506ea6e334c45f4219336
4
+ data.tar.gz: ea0a4ecfa30ef3049ceb8edfc2dac750f3d5521a263e82a79fc18e65c7e7b496
5
5
  SHA512:
6
- metadata.gz: 5604f4ebd14b80aaa29aa4ac5189c706fa0643ea4d0e7f1fc901bf5a3463ed8439089022b4d3304635901b7ddf1b412043ec32bd179d7850e2724d883174d958
7
- data.tar.gz: 4b59ab65a5ddef012752238629a8f303096d99ad2f6b0a96210fd524d0b4907ae8fbde86528af5de299c94a16084d259fc6db1bb4bf582e71fe044dd79f9b2d4
6
+ metadata.gz: a2904814cc6e2e50431ef9eae41e33032c507d27d0a7e3ccea4e348ba19baafc60b7592abe7fb8e4217d49609a14954874579c958e39c5453f975d7e09175b73
7
+ data.tar.gz: c0fa12a9dade9ba87ab019fed19fff3f1cbd016d7e75a672c5f2da765dc53680929617f7a34408b681d054de0b65205bf0437789e0b48a80640378bcf8f4ee3c
@@ -1,11 +1,7 @@
1
1
  name: Ruby CI
2
2
 
3
3
  on:
4
- pull_request:
5
- types: [opened, synchronize, reopened]
6
4
  push:
7
- branches:
8
- - main
9
5
 
10
6
  jobs:
11
7
  test:
@@ -14,7 +10,7 @@ jobs:
14
10
  strategy:
15
11
  fail-fast: false
16
12
  matrix:
17
- ruby-version: [2.7.2, 2.6.6, 2.5.8]
13
+ ruby-version: [3.0.2]
18
14
 
19
15
  steps:
20
16
  - uses: actions/checkout@v2
data/.rubocop.yml CHANGED
@@ -4,4 +4,4 @@ inherit_gem:
4
4
  - config/minitest.yml
5
5
 
6
6
  AllCops:
7
- TargetRubyVersion: 2.5
7
+ TargetRubyVersion: 3.0
data/Gemfile CHANGED
@@ -11,3 +11,5 @@ gem 'rake', '~> 12.0'
11
11
  gem 'rubocop', '~> 1.6'
12
12
  gem 'rubocop-performance', '~> 1.9'
13
13
  gem 'rubocop-standard', '~> 5.1'
14
+
15
+ gem 'webmock', '~> 3.11'
data/Gemfile.lock CHANGED
@@ -1,102 +1,113 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- slack_webhook_logger (0.1.0)
4
+ slack_webhook_logger (0.3.0)
5
5
  activesupport (>= 5.0, < 7.0)
6
6
  railties (>= 5.0, < 7.0)
7
7
 
8
8
  GEM
9
9
  remote: https://rubygems.org/
10
10
  specs:
11
- actionpack (5.2.4.4)
12
- actionview (= 5.2.4.4)
13
- activesupport (= 5.2.4.4)
14
- rack (~> 2.0, >= 2.0.8)
11
+ actionpack (6.1.4.4)
12
+ actionview (= 6.1.4.4)
13
+ activesupport (= 6.1.4.4)
14
+ rack (~> 2.0, >= 2.0.9)
15
15
  rack-test (>= 0.6.3)
16
16
  rails-dom-testing (~> 2.0)
17
- rails-html-sanitizer (~> 1.0, >= 1.0.2)
18
- actionview (5.2.4.4)
19
- activesupport (= 5.2.4.4)
17
+ rails-html-sanitizer (~> 1.0, >= 1.2.0)
18
+ actionview (6.1.4.4)
19
+ activesupport (= 6.1.4.4)
20
20
  builder (~> 3.1)
21
21
  erubi (~> 1.4)
22
22
  rails-dom-testing (~> 2.0)
23
- rails-html-sanitizer (~> 1.0, >= 1.0.3)
24
- activesupport (5.2.4.4)
23
+ rails-html-sanitizer (~> 1.1, >= 1.2.0)
24
+ activesupport (6.1.4.4)
25
25
  concurrent-ruby (~> 1.0, >= 1.0.2)
26
- i18n (>= 0.7, < 2)
27
- minitest (~> 5.1)
28
- tzinfo (~> 1.1)
29
- ast (2.4.1)
30
- awesome_print (1.8.0)
26
+ i18n (>= 1.6, < 2)
27
+ minitest (>= 5.1)
28
+ tzinfo (~> 2.0)
29
+ zeitwerk (~> 2.3)
30
+ addressable (2.8.0)
31
+ public_suffix (>= 2.0.2, < 5.0)
32
+ ast (2.4.2)
33
+ awesome_print (1.9.2)
31
34
  builder (3.2.4)
32
- concurrent-ruby (1.1.7)
35
+ concurrent-ruby (1.1.9)
36
+ crack (0.4.5)
37
+ rexml
33
38
  crass (1.0.6)
34
39
  erubi (1.10.0)
35
- i18n (1.8.5)
40
+ hashdiff (1.0.1)
41
+ i18n (1.8.11)
36
42
  concurrent-ruby (~> 1.0)
37
- loofah (2.8.0)
43
+ loofah (2.13.0)
38
44
  crass (~> 1.0.2)
39
45
  nokogiri (>= 1.5.9)
40
46
  method_source (1.0.0)
41
- mini_portile2 (2.4.0)
42
- minitest (5.14.2)
43
- nokogiri (1.10.10)
44
- mini_portile2 (~> 2.4.0)
45
- parallel (1.20.1)
46
- parser (2.7.2.0)
47
+ minitest (5.15.0)
48
+ nokogiri (1.12.5-arm64-darwin)
49
+ racc (~> 1.4)
50
+ parallel (1.21.0)
51
+ parser (3.0.3.2)
47
52
  ast (~> 2.4.1)
53
+ public_suffix (4.0.6)
54
+ racc (1.6.0)
48
55
  rack (2.2.3)
49
56
  rack-test (1.1.0)
50
57
  rack (>= 1.0, < 3)
51
58
  rails-dom-testing (2.0.3)
52
59
  activesupport (>= 4.2.0)
53
60
  nokogiri (>= 1.6)
54
- rails-html-sanitizer (1.3.0)
61
+ rails-html-sanitizer (1.4.2)
55
62
  loofah (~> 2.3)
56
- railties (5.2.4.4)
57
- actionpack (= 5.2.4.4)
58
- activesupport (= 5.2.4.4)
63
+ railties (6.1.4.4)
64
+ actionpack (= 6.1.4.4)
65
+ activesupport (= 6.1.4.4)
59
66
  method_source
60
- rake (>= 0.8.7)
61
- thor (>= 0.19.0, < 2.0)
67
+ rake (>= 0.13)
68
+ thor (~> 1.0)
62
69
  rainbow (3.0.0)
63
70
  rake (12.3.3)
64
- regexp_parser (2.0.0)
65
- rexml (3.2.4)
66
- rubocop (1.6.1)
71
+ regexp_parser (2.2.0)
72
+ rexml (3.2.5)
73
+ rubocop (1.23.0)
67
74
  parallel (~> 1.10)
68
- parser (>= 2.7.1.5)
75
+ parser (>= 3.0.0.0)
69
76
  rainbow (>= 2.2.2, < 4.0)
70
77
  regexp_parser (>= 1.8, < 3.0)
71
78
  rexml
72
- rubocop-ast (>= 1.2.0, < 2.0)
79
+ rubocop-ast (>= 1.12.0, < 2.0)
73
80
  ruby-progressbar (~> 1.7)
74
- unicode-display_width (>= 1.4.0, < 2.0)
75
- rubocop-ast (1.3.0)
76
- parser (>= 2.7.1.5)
77
- rubocop-minitest (0.10.1)
78
- rubocop (>= 0.87)
79
- rubocop-performance (1.9.1)
80
- rubocop (>= 0.90.0, < 2.0)
81
+ unicode-display_width (>= 1.4.0, < 3.0)
82
+ rubocop-ast (1.15.0)
83
+ parser (>= 3.0.1.1)
84
+ rubocop-minitest (0.17.0)
85
+ rubocop (>= 0.90, < 2.0)
86
+ rubocop-performance (1.12.0)
87
+ rubocop (>= 1.7.0, < 2.0)
81
88
  rubocop-ast (>= 0.4.0)
82
- rubocop-rails (2.9.0)
89
+ rubocop-rails (2.12.4)
83
90
  activesupport (>= 4.2.0)
84
91
  rack (>= 1.1)
85
- rubocop (>= 0.90.0, < 2.0)
86
- rubocop-rake (0.5.1)
87
- rubocop
92
+ rubocop (>= 1.7.0, < 2.0)
93
+ rubocop-rake (0.6.0)
94
+ rubocop (~> 1.0)
88
95
  rubocop-standard (5.1.2)
89
96
  rubocop
90
97
  rubocop-minitest
91
98
  rubocop-performance
92
99
  rubocop-rails
93
100
  rubocop-rake
94
- ruby-progressbar (1.10.1)
95
- thor (1.0.1)
96
- thread_safe (0.3.6)
97
- tzinfo (1.2.8)
98
- thread_safe (~> 0.1)
99
- unicode-display_width (1.7.0)
101
+ ruby-progressbar (1.11.0)
102
+ thor (1.1.0)
103
+ tzinfo (2.0.4)
104
+ concurrent-ruby (~> 1.0)
105
+ unicode-display_width (2.1.0)
106
+ webmock (3.14.0)
107
+ addressable (>= 2.8.0)
108
+ crack (>= 0.3.2)
109
+ hashdiff (>= 0.4.0, < 2.0.0)
110
+ zeitwerk (2.5.1)
100
111
 
101
112
  PLATFORMS
102
113
  ruby
@@ -109,6 +120,7 @@ DEPENDENCIES
109
120
  rubocop-performance (~> 1.9)
110
121
  rubocop-standard (~> 5.1)
111
122
  slack_webhook_logger!
123
+ webmock (~> 3.11)
112
124
 
113
125
  BUNDLED WITH
114
- 2.1.4
126
+ 2.2.33
data/README.md CHANGED
@@ -38,4 +38,4 @@ end
38
38
 
39
39
  ## Configuration
40
40
 
41
- You can change the log level or the format of the logging text if you wish. See the generated slack_webhook_logger.rb file for more infomation on that.
41
+ You can change the log level or the format of the logging text if you wish. See the generated slack_webhook_logger.rb file for more information on that.
@@ -14,4 +14,8 @@ SlackWebhookLogger.setup do |config|
14
14
  # The formatter must construct a JSON blob that adheres to Slack's expected
15
15
  # POST payload for `chat.postMessage`: https://api.slack.com/methods/chat.postMessage
16
16
  # config.formatter = SomeOtherFormatter.new
17
+
18
+ # You can provide an array of regular expressions to ignore certain messages
19
+ # from being sent to Slack. This is optional.
20
+ # config.ignore_patterns = []
17
21
  end
@@ -5,7 +5,7 @@ module SlackWebhookLogger
5
5
  attr_writer :format
6
6
 
7
7
  def format
8
- @format ||= proc { |severity, time, _progname, msg|
8
+ @format ||= proc do |severity, time, _progname, msg|
9
9
  heading = case severity
10
10
  when 'FATAL'
11
11
  "📛 *#{severity}*"
@@ -21,41 +21,45 @@ module SlackWebhookLogger
21
21
  '🪵 *Logger*'
22
22
  end
23
23
 
24
- title = "#{heading} (#{time})"
24
+ title = "#{heading} (#{time}) [#{ENV['RAILS_ENV']}]"
25
25
 
26
26
  text = <<~MSG
27
27
  #{msg2str(msg)}
28
28
  MSG
29
29
 
30
- {
31
- text: [title, text].join("\n").to_s,
32
- blocks: [
33
- {
34
- type: 'section',
35
- text: {
36
- type: 'mrkdwn',
37
- text: title
38
- }
39
- },
40
- {
41
- type: 'divider'
42
- },
43
- {
44
- type: 'section',
45
- text: {
46
- "type": 'plain_text',
47
- "text": text
48
- }
49
- }
50
- ]
51
- }
52
- }
30
+ slackify(title, text)
31
+ end
53
32
  end
54
33
 
55
34
  def call(severity, time, progname, msg)
56
35
  format.call(severity, time, progname, msg)
57
36
  end
58
37
 
38
+ def slackify(title, text)
39
+ {
40
+ text: [title, text].join("\n").to_s,
41
+ blocks: [
42
+ {
43
+ type: 'section',
44
+ text: {
45
+ type: 'mrkdwn',
46
+ text: title
47
+ }
48
+ },
49
+ {
50
+ type: 'divider'
51
+ },
52
+ {
53
+ type: 'section',
54
+ text: {
55
+ type: 'plain_text',
56
+ text: text
57
+ }
58
+ }
59
+ ]
60
+ }
61
+ end
62
+
59
63
  private def msg2str(msg)
60
64
  case msg
61
65
  when ::String
@@ -9,11 +9,15 @@ module SlackWebhookLogger
9
9
  true
10
10
  end
11
11
 
12
- def self.write(payload)
13
- return if payload.blank?
12
+ def self.write(hash)
13
+ return if hash.blank?
14
+
15
+ return if SlackWebhookLogger.ignore_patterns.any? { |ignore_pattern| hash[:text].match(ignore_pattern) }
16
+
17
+ payload = hash.to_json
14
18
 
15
19
  req = Net::HTTP::Post.new(SlackWebhookLogger.webhook_uri.path)
16
- req.set_form_data(payload: payload.to_json)
20
+ req.set_form_data(payload: payload)
17
21
  SlackWebhookLogger.https.request(req)
18
22
  end
19
23
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module SlackWebhookLogger
4
- VERSION = '0.1.0'
4
+ VERSION = '0.3.0'
5
5
  end
@@ -16,6 +16,7 @@ module SlackWebhookLogger
16
16
  mattr_accessor :webhook_url
17
17
  mattr_accessor :level
18
18
  mattr_accessor :formatter
19
+ mattr_accessor :ignore_patterns
19
20
 
20
21
  # Used internally
21
22
  mattr_reader :webhook_uri
@@ -37,6 +38,8 @@ module SlackWebhookLogger
37
38
  https.verify_mode = OpenSSL::SSL::VERIFY_PEER
38
39
 
39
40
  @@https = https
41
+
42
+ @@ignore_patterns ||= []
40
43
  end
41
44
  # rubocop:enable Style/ClassVars
42
45
  end
@@ -11,7 +11,7 @@ Gem::Specification.new do |spec|
11
11
  spec.summary = 'A slim wrapper for posting to Rails logs to Slack'
12
12
  spec.homepage = 'https://github.com/gjtorikian/slack_webhook_logger'
13
13
  spec.license = 'MIT'
14
- spec.required_ruby_version = Gem::Requirement.new('~> 2.5')
14
+ spec.required_ruby_version = Gem::Requirement.new('~> 3.0')
15
15
 
16
16
  spec.metadata['homepage_uri'] = spec.homepage
17
17
  spec.metadata['source_code_uri'] = spec.homepage
@@ -26,4 +26,7 @@ Gem::Specification.new do |spec|
26
26
 
27
27
  spec.add_dependency 'activesupport', '>= 5.0', '< 7.0'
28
28
  spec.add_dependency 'railties', '>= 5.0', '< 7.0' # for the generators
29
+ spec.metadata = {
30
+ 'rubygems_mfa_required' => 'true'
31
+ }
29
32
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: slack_webhook_logger
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Garen J. Torikian
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-12-15 00:00:00.000000000 Z
11
+ date: 2021-12-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -82,8 +82,7 @@ homepage: https://github.com/gjtorikian/slack_webhook_logger
82
82
  licenses:
83
83
  - MIT
84
84
  metadata:
85
- homepage_uri: https://github.com/gjtorikian/slack_webhook_logger
86
- source_code_uri: https://github.com/gjtorikian/slack_webhook_logger
85
+ rubygems_mfa_required: 'true'
87
86
  post_install_message:
88
87
  rdoc_options: []
89
88
  require_paths:
@@ -92,14 +91,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
92
91
  requirements:
93
92
  - - "~>"
94
93
  - !ruby/object:Gem::Version
95
- version: '2.5'
94
+ version: '3.0'
96
95
  required_rubygems_version: !ruby/object:Gem::Requirement
97
96
  requirements:
98
97
  - - ">="
99
98
  - !ruby/object:Gem::Version
100
99
  version: '0'
101
100
  requirements: []
102
- rubygems_version: 3.1.4
101
+ rubygems_version: 3.2.33
103
102
  signing_key:
104
103
  specification_version: 4
105
104
  summary: A slim wrapper for posting to Rails logs to Slack