slack_webhook_logger 0.3.1 → 0.5.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: 7b2ea7a93a3ddc68d86ffdfa85b7b9f9694484fc88962f514e36e2319019043c
4
- data.tar.gz: df61448759a8f085ae5693c30f1a5c45e5c6a44a872a8eaf984f6390d11c071c
3
+ metadata.gz: a8aca45921ee3b9d9bcecb993e4b4ef9f30b7853e802babce6e0f5b208ddd2ca
4
+ data.tar.gz: abaf6b83376d4e412d6971b6885f2c3de02a3191f07a6ea7909aa77c5f0c99e1
5
5
  SHA512:
6
- metadata.gz: 7464c0106b86d2029d5075cf1220f53cf4f8d0d7d71a55716f20b84388332ff1497d609d2e72ab0fb493609378bf88e34057e40a5ea2b9517b0faa5994e74fa4
7
- data.tar.gz: 90918593ee010f3547f39f6de174739f42ccef225c2435270579473b653bfb5f5d549e19efe6f274c82d057685d14d54f52d2c2713213c90b4b52b1f54ffc506
6
+ metadata.gz: db1edd27e70437d26658f21caf2424b02ff3d0ca1436e56fea8888f608e8f9799b179fd61f2e63e8c3c17134d865d6796d5f66a48ac9ea3c3225152f5681630f
7
+ data.tar.gz: 2702fd661d5bf78050cf82033e2ea60ce65a201fa4cc28ae63bb8f8013abeac6ed7a452725231a83568c01d4032067c5e0d87b010573ac64b0beaaf37719d0d8
data/.github/FUNDING.yml CHANGED
@@ -1,12 +1,3 @@
1
1
  # These are supported funding model platforms
2
2
 
3
3
  github: gjtorikian
4
- patreon: gjtorikian
5
- open_collective: garen-torikian
6
- #ko_fi: # Replace with a single Ko-fi username
7
- #tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel
8
- #community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry
9
- #liberapay: # Replace with a single Liberapay username
10
- issuehunt: gjtorikian
11
- #otechie: # Replace with a single Otechie username
12
- #custom: # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2']
@@ -0,0 +1,17 @@
1
+ version: 2
2
+ updates:
3
+ - package-ecosystem: "github-actions"
4
+ directory: "/"
5
+ schedule:
6
+ interval: daily
7
+ time: "09:00"
8
+ timezone: "Etc/UTC"
9
+ open-pull-requests-limit: 10
10
+
11
+ - package-ecosystem: "bundler"
12
+ directory: "/"
13
+ schedule:
14
+ interval: daily
15
+ time: "09:00"
16
+ timezone: "Etc/UTC"
17
+ open-pull-requests-limit: 10
@@ -0,0 +1,14 @@
1
+ name: "Bot auto-{approve,merge}"
2
+
3
+ on:
4
+ workflow_dispatch:
5
+ pull_request_target:
6
+
7
+ permissions:
8
+ pull-requests: write
9
+ contents: write
10
+
11
+ jobs:
12
+ dependabot:
13
+ uses: yettoapp/actions/.github/workflows/automerge_dependabot.yml@main
14
+ secrets: inherit
@@ -2,20 +2,22 @@ name: Linting
2
2
 
3
3
  on:
4
4
  pull_request:
5
- types: [opened, synchronize, reopened]
6
- push:
7
- branches:
8
- - main
5
+ paths:
6
+ - "**/*.rb"
7
+
8
+ permissions:
9
+ contents: read
9
10
 
10
11
  jobs:
11
- test:
12
+ lint:
12
13
  runs-on: ubuntu-latest
13
14
  steps:
14
- - uses: actions/checkout@v2
15
- - uses: ruby/setup-ruby@v1
15
+ - uses: actions/checkout@v3
16
+
17
+ - name: Set up Ruby
18
+ uses: yettoapp/actions/setup-languages@main
16
19
  with:
17
- ruby-version: 2.7
18
- bundler-cache: true
19
- - run: bundle install
20
+ ruby: true
21
+
20
22
  - name: Rubocop
21
23
  run: bundle exec rake rubocop
@@ -0,0 +1,19 @@
1
+ name: Release
2
+
3
+ on:
4
+ workflow_dispatch:
5
+ push:
6
+ branches:
7
+ - main
8
+ paths:
9
+ - "lib/slack_webhook_logger/version.rb"
10
+
11
+ jobs:
12
+ ruby:
13
+ uses: yettoapp/actions/.github/workflows/ruby_gem_release.yml@main
14
+ secrets:
15
+ rubygems_api_key: ${{ secrets.RUBYGEMS_API_BOT_KEY }}
16
+ gh_token: ${{ secrets.PUBLIC_PUSH_TO_PROTECTED_BRANCH }}
17
+ with:
18
+ gem_name: slack_webhook_logger
19
+ version_filepath: lib/slack_webhook_logger/version.rb
@@ -0,0 +1,22 @@
1
+ name: CI
2
+
3
+ on:
4
+ pull_request:
5
+
6
+ permissions:
7
+ contents: read
8
+
9
+ jobs:
10
+ test:
11
+ runs-on: ubuntu-latest
12
+
13
+ steps:
14
+ - uses: actions/checkout@v3
15
+
16
+ - name: Set up Ruby
17
+ uses: yettoapp/actions/setup-languages@main
18
+ with:
19
+ ruby: true
20
+
21
+ - name: Run tests
22
+ run: bundle exec rake test
data/.rubocop.yml CHANGED
@@ -2,6 +2,3 @@ inherit_gem:
2
2
  rubocop-standard:
3
3
  - config/default.yml
4
4
  - config/minitest.yml
5
-
6
- AllCops:
7
- TargetRubyVersion: 3.0
data/.ruby-version ADDED
@@ -0,0 +1 @@
1
+ 3.2.1
@@ -0,0 +1,8 @@
1
+ {
2
+ "[ruby]": {
3
+ "editor.defaultFormatter": "Shopify.ruby-lsp"
4
+ },
5
+ "[markdown]": {
6
+ "editor.defaultFormatter": "esbenp.prettier-vscode"
7
+ }
8
+ }
data/CHANGELOG.md ADDED
@@ -0,0 +1,2 @@
1
+ ## [v0.5.0] - 05-07-2023
2
+ null
data/Gemfile CHANGED
@@ -1,15 +1,18 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- source 'https://rubygems.org'
3
+ source "https://rubygems.org"
4
4
 
5
5
  # Specify your gem's dependencies in slack-webhooklogger.gemspec
6
6
  gemspec
7
7
 
8
- gem 'awesome_print', '~> 1.8'
9
- gem 'minitest', '~> 5.0'
10
- gem 'rake', '~> 12.0'
8
+ gem 'minitest', '~> 5.18'
9
+ gem 'rake', '~> 13.0'
11
10
  gem 'rubocop', '~> 1.6'
12
- gem 'rubocop-performance', '~> 1.9'
13
- gem 'rubocop-standard', '~> 5.1'
11
+ gem "rubocop-standard"
14
12
 
15
- gem 'webmock', '~> 3.11'
13
+ gem "webmock", "~> 3.11"
14
+ # mocking lib
15
+ gem "mocha", "~> 2.0"
16
+
17
+ gem "amazing_print", require: false
18
+ gem "debug", require: false
data/Gemfile.lock CHANGED
@@ -1,124 +1,156 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- slack_webhook_logger (0.3.1)
4
+ slack_webhook_logger (0.5.0)
5
5
  activesupport (>= 5.0, < 8.0)
6
+ httpx (~> 0.20)
6
7
  railties (>= 5.0, < 8.0)
7
8
 
8
9
  GEM
9
10
  remote: https://rubygems.org/
10
11
  specs:
11
- actionpack (7.0.0)
12
- actionview (= 7.0.0)
13
- activesupport (= 7.0.0)
14
- rack (~> 2.0, >= 2.2.0)
12
+ actionpack (7.0.6)
13
+ actionview (= 7.0.6)
14
+ activesupport (= 7.0.6)
15
+ rack (~> 2.0, >= 2.2.4)
15
16
  rack-test (>= 0.6.3)
16
17
  rails-dom-testing (~> 2.0)
17
18
  rails-html-sanitizer (~> 1.0, >= 1.2.0)
18
- actionview (7.0.0)
19
- activesupport (= 7.0.0)
19
+ actionview (7.0.6)
20
+ activesupport (= 7.0.6)
20
21
  builder (~> 3.1)
21
22
  erubi (~> 1.4)
22
23
  rails-dom-testing (~> 2.0)
23
24
  rails-html-sanitizer (~> 1.1, >= 1.2.0)
24
- activesupport (7.0.0)
25
+ activesupport (7.0.6)
25
26
  concurrent-ruby (~> 1.0, >= 1.0.2)
26
27
  i18n (>= 1.6, < 2)
27
28
  minitest (>= 5.1)
28
29
  tzinfo (~> 2.0)
29
- addressable (2.8.0)
30
- public_suffix (>= 2.0.2, < 5.0)
30
+ addressable (2.8.4)
31
+ public_suffix (>= 2.0.2, < 6.0)
32
+ amazing_print (1.5.0)
31
33
  ast (2.4.2)
32
- awesome_print (1.9.2)
33
34
  builder (3.2.4)
34
- concurrent-ruby (1.1.9)
35
+ concurrent-ruby (1.2.2)
35
36
  crack (0.4.5)
36
37
  rexml
37
38
  crass (1.0.6)
38
- erubi (1.10.0)
39
+ debug (1.8.0)
40
+ irb (>= 1.5.0)
41
+ reline (>= 0.3.1)
42
+ erubi (1.12.0)
39
43
  hashdiff (1.0.1)
40
- i18n (1.8.11)
44
+ http-2-next (0.5.1)
45
+ httpx (0.24.1)
46
+ http-2-next (>= 0.4.1)
47
+ i18n (1.14.1)
41
48
  concurrent-ruby (~> 1.0)
42
- loofah (2.13.0)
49
+ io-console (0.6.0)
50
+ irb (1.7.1)
51
+ reline (>= 0.3.0)
52
+ json (2.6.3)
53
+ language_server-protocol (3.17.0.3)
54
+ loofah (2.21.3)
43
55
  crass (~> 1.0.2)
44
- nokogiri (>= 1.5.9)
56
+ nokogiri (>= 1.12.0)
45
57
  method_source (1.0.0)
46
- minitest (5.15.0)
47
- nokogiri (1.12.5-arm64-darwin)
58
+ minitest (5.18.1)
59
+ mocha (2.0.4)
60
+ ruby2_keywords (>= 0.0.5)
61
+ nokogiri (1.15.3-arm64-darwin)
48
62
  racc (~> 1.4)
49
- parallel (1.21.0)
50
- parser (3.0.3.2)
63
+ nokogiri (1.15.3-x86_64-linux)
64
+ racc (~> 1.4)
65
+ parallel (1.23.0)
66
+ parser (3.2.2.3)
51
67
  ast (~> 2.4.1)
52
- public_suffix (4.0.6)
53
- racc (1.6.0)
54
- rack (2.2.3)
55
- rack-test (1.1.0)
56
- rack (>= 1.0, < 3)
57
- rails-dom-testing (2.0.3)
58
- activesupport (>= 4.2.0)
68
+ racc
69
+ public_suffix (5.0.1)
70
+ racc (1.7.1)
71
+ rack (2.2.7)
72
+ rack-test (2.1.0)
73
+ rack (>= 1.3)
74
+ rails-dom-testing (2.1.1)
75
+ activesupport (>= 5.0.0)
76
+ minitest
59
77
  nokogiri (>= 1.6)
60
- rails-html-sanitizer (1.4.2)
61
- loofah (~> 2.3)
62
- railties (7.0.0)
63
- actionpack (= 7.0.0)
64
- activesupport (= 7.0.0)
78
+ rails-html-sanitizer (1.6.0)
79
+ loofah (~> 2.21)
80
+ nokogiri (~> 1.14)
81
+ railties (7.0.6)
82
+ actionpack (= 7.0.6)
83
+ activesupport (= 7.0.6)
65
84
  method_source
66
85
  rake (>= 12.2)
67
86
  thor (~> 1.0)
68
87
  zeitwerk (~> 2.5)
69
- rainbow (3.0.0)
70
- rake (12.3.3)
71
- regexp_parser (2.2.0)
88
+ rainbow (3.1.1)
89
+ rake (13.0.6)
90
+ regexp_parser (2.8.1)
91
+ reline (0.3.5)
92
+ io-console (~> 0.5)
72
93
  rexml (3.2.5)
73
- rubocop (1.23.0)
94
+ rubocop (1.54.1)
95
+ json (~> 2.3)
96
+ language_server-protocol (>= 3.17.0)
74
97
  parallel (~> 1.10)
75
- parser (>= 3.0.0.0)
98
+ parser (>= 3.2.2.3)
76
99
  rainbow (>= 2.2.2, < 4.0)
77
100
  regexp_parser (>= 1.8, < 3.0)
78
- rexml
79
- rubocop-ast (>= 1.12.0, < 2.0)
101
+ rexml (>= 3.2.5, < 4.0)
102
+ rubocop-ast (>= 1.28.0, < 2.0)
80
103
  ruby-progressbar (~> 1.7)
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)
104
+ unicode-display_width (>= 2.4.0, < 3.0)
105
+ rubocop-ast (1.29.0)
106
+ parser (>= 3.2.1.0)
107
+ rubocop-minitest (0.31.0)
108
+ rubocop (>= 1.39, < 2.0)
109
+ rubocop-performance (1.18.0)
87
110
  rubocop (>= 1.7.0, < 2.0)
88
111
  rubocop-ast (>= 0.4.0)
89
- rubocop-rails (2.12.4)
112
+ rubocop-rails (2.20.2)
90
113
  activesupport (>= 4.2.0)
91
114
  rack (>= 1.1)
92
- rubocop (>= 1.7.0, < 2.0)
115
+ rubocop (>= 1.33.0, < 2.0)
93
116
  rubocop-rake (0.6.0)
94
117
  rubocop (~> 1.0)
95
- rubocop-standard (5.1.2)
118
+ rubocop-shopify (2.14.0)
119
+ rubocop (~> 1.51)
120
+ rubocop-sorbet (0.7.0)
121
+ rubocop (>= 0.90.0)
122
+ rubocop-standard (7.1.0)
96
123
  rubocop
97
124
  rubocop-minitest
98
125
  rubocop-performance
99
126
  rubocop-rails
100
127
  rubocop-rake
101
- ruby-progressbar (1.11.0)
102
- thor (1.1.0)
103
- tzinfo (2.0.4)
128
+ rubocop-shopify
129
+ rubocop-sorbet
130
+ ruby-progressbar (1.13.0)
131
+ ruby2_keywords (0.0.5)
132
+ thor (1.2.2)
133
+ tzinfo (2.0.6)
104
134
  concurrent-ruby (~> 1.0)
105
- unicode-display_width (2.1.0)
106
- webmock (3.14.0)
135
+ unicode-display_width (2.4.2)
136
+ webmock (3.18.1)
107
137
  addressable (>= 2.8.0)
108
138
  crack (>= 0.3.2)
109
139
  hashdiff (>= 0.4.0, < 2.0.0)
110
- zeitwerk (2.5.1)
140
+ zeitwerk (2.6.8)
111
141
 
112
142
  PLATFORMS
113
- ruby
143
+ arm64-darwin-22
144
+ x86_64-linux
114
145
 
115
146
  DEPENDENCIES
116
- awesome_print (~> 1.8)
117
- minitest (~> 5.0)
118
- rake (~> 12.0)
147
+ amazing_print
148
+ debug
149
+ minitest (~> 5.18)
150
+ mocha (~> 2.0)
151
+ rake (~> 13.0)
119
152
  rubocop (~> 1.6)
120
- rubocop-performance (~> 1.9)
121
- rubocop-standard (~> 5.1)
153
+ rubocop-standard
122
154
  slack_webhook_logger!
123
155
  webmock (~> 3.11)
124
156
 
data/README.md CHANGED
@@ -7,7 +7,7 @@ A simple Slack logger using ActiveSupport broadcast and a slim HTTPS call.
7
7
  Add this line to your application's Gemfile:
8
8
 
9
9
  ```ruby
10
- gem 'slack-webhooklogger'
10
+ gem 'slack_webhook_logger'
11
11
  ```
12
12
 
13
13
  And then execute:
@@ -19,13 +19,13 @@ $ bundle install
19
19
  Or install it yourself as:
20
20
 
21
21
  ```
22
- $ gem install slack-webhooklogger
22
+ $ gem install slack_webhook_logger
23
23
  ```
24
24
 
25
25
  Then, run the install generator:
26
26
 
27
27
  ```
28
- $ rails generate slack-webhooklogger:install
28
+ $ rails generate slack_webhook_logger:install
29
29
  ```
30
30
 
31
31
  Provide the webhook URL in the config, and finally, extend the logger:
@@ -38,4 +38,28 @@ end
38
38
 
39
39
  ## Configuration
40
40
 
41
+ You should have a file in `config/initializers/slack_webhook_logger.rb` that looks somrthing like this:
42
+
43
+ ```ruby
44
+ SlackWebhookLogger.setup do |config|
45
+ # The URL where messages will be sent. This is required.
46
+ config.webhook_url = 'https://hooks.slack.com/services/xxx/yyy/zzz'
47
+
48
+ # The minimum error level to see in Slack. This is optional; the default is :WARN.
49
+ #
50
+ # All log levels are supported, but don't rely on anything less then :WARN
51
+ # since Slack only allows one message per minute.
52
+ # config.level = :WARN
53
+
54
+ # You can provide a custom log formatter if you want to. This is optional.
55
+ # The formatter must construct a JSON blob that adheres to Slack's expected
56
+ # POST payload for `chat.postMessage`: https://api.slack.com/methods/chat.postMessage
57
+ # config.formatter = SomeOtherFormatter.new
58
+
59
+ # You can provide an array of regular expressions to ignore certain messages
60
+ # from being sent to Slack. This is optional.
61
+ # config.ignore_patterns = []
62
+ end
63
+ ```
64
+
41
65
  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.
data/Rakefile CHANGED
@@ -1,16 +1,20 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'bundler/gem_tasks'
4
- require 'rake/testtask'
3
+ require "bundler/gem_tasks"
4
+ require "rubygems/package_task"
5
+ require "rake/testtask"
5
6
 
6
7
  Rake::TestTask.new(:test) do |t|
7
- t.libs << 'test'
8
- t.libs << 'lib'
9
- t.test_files = FileList['test/**/*_test.rb']
8
+ t.libs << "test"
9
+ t.libs << "lib"
10
+ t.test_files = FileList["test/**/*_test.rb"]
10
11
  end
11
12
 
12
- task default: :test
13
+ require "rubocop/rake_task"
13
14
 
14
- require 'rubocop/rake_task'
15
+ RuboCop::RakeTask.new
15
16
 
16
- RuboCop::RakeTask.new(:rubocop)
17
+ GEMSPEC = Bundler.load_gemspec("slack_webhook_logger.gemspec")
18
+ gem_path = Gem::PackageTask.new(GEMSPEC).define
19
+ desc "Package the ruby gem"
20
+ task "package" => [gem_path]
@@ -1,15 +1,15 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'rails/generators/base'
3
+ require "rails/generators/base"
4
4
 
5
5
  module SlackWebhookLogger
6
6
  class InstallGenerator < Rails::Generators::Base
7
7
  source_root File.expand_path("..#{File::SEPARATOR}..#{File::SEPARATOR}templates", __FILE__)
8
8
 
9
- desc 'Create a Slack::WebhookLogger initializer'
9
+ desc "Create a Slack::WebhookLogger initializer"
10
10
 
11
11
  def copy_initializer
12
- template 'slack_webhook_logger.rb', 'config/initializers/slack_webhook_logger.rb'
12
+ template("slack_webhook_logger.rb", "config/initializers/slack_webhook_logger.rb")
13
13
  end
14
14
  end
15
15
  end
@@ -2,7 +2,7 @@
2
2
 
3
3
  SlackWebhookLogger.setup do |config|
4
4
  # The URL where messages will be sent. This is required.
5
- config.webhook_url = 'https://hooks.slack.com/services/xxx/yyy/zzz'
5
+ config.webhook_url = "https://hooks.slack.com/services/xxx/yyy/zzz"
6
6
 
7
7
  # The minimum error level to see in Slack. This is optional; the default is :WARN.
8
8
  #
@@ -7,21 +7,21 @@ module SlackWebhookLogger
7
7
  def format
8
8
  @format ||= proc do |severity, time, _progname, msg|
9
9
  heading = case severity
10
- when 'FATAL'
11
- "📛 *#{severity}*"
12
- when 'ERROR'
13
- "🛑 *#{severity}*"
14
- when 'WARN'
15
- "⚠️ *#{severity}*"
16
- when 'INFO'
17
- "ℹ️ *#{severity}*"
18
- when 'DEBUG'
19
- "🐛 *#{severity}*"
20
- else
21
- '🪵 *Logger*'
22
- end
10
+ when "FATAL"
11
+ "📛 *#{severity}*"
12
+ when "ERROR"
13
+ "🛑 *#{severity}*"
14
+ when "WARN"
15
+ "⚠️ *#{severity}*"
16
+ when "INFO"
17
+ "ℹ️ *#{severity}*"
18
+ when "DEBUG"
19
+ "🐛 *#{severity}*"
20
+ else
21
+ "🪵 *Logger*"
22
+ end
23
23
 
24
- title = "#{heading} (#{time}) [#{ENV['RAILS_ENV']}]"
24
+ title = "#{heading} (#{time}) [#{ENV.fetch("RAILS_ENV", nil)}]"
25
25
 
26
26
  text = <<~MSG
27
27
  #{msg2str(msg)}
@@ -40,23 +40,23 @@ module SlackWebhookLogger
40
40
  text: [title, text].join("\n").to_s,
41
41
  blocks: [
42
42
  {
43
- type: 'section',
43
+ type: "section",
44
44
  text: {
45
- type: 'mrkdwn',
46
- text: title
47
- }
45
+ type: "mrkdwn",
46
+ text: title,
47
+ },
48
48
  },
49
49
  {
50
- type: 'divider'
50
+ type: "divider",
51
51
  },
52
52
  {
53
- type: 'section',
53
+ type: "section",
54
54
  text: {
55
- type: 'plain_text',
56
- text: text
57
- }
58
- }
59
- ]
55
+ type: "plain_text",
56
+ text: text,
57
+ },
58
+ },
59
+ ],
60
60
  }
61
61
  end
62
62
 
@@ -66,7 +66,7 @@ module SlackWebhookLogger
66
66
  msg
67
67
  when ::Exception
68
68
  "#{msg.message} (#{msg.class})\n" <<
69
- (msg.backtrace || []).join("\n")
69
+ (msg.backtrace || []).join("\n")
70
70
  else
71
71
  msg.inspect
72
72
  end
@@ -1,12 +1,18 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'active_support/core_ext/module/delegation'
3
+ require "active_support/core_ext/module/delegation"
4
4
 
5
5
  module SlackWebhookLogger
6
6
  class Logger < ::ActiveSupport::Logger
7
7
  class << self
8
- delegate :fatal, :error, :warn, :info, :debug, \
9
- :add, :log, to: :instance
8
+ delegate :fatal,
9
+ :error,
10
+ :warn,
11
+ :info,
12
+ :debug,
13
+ :add,
14
+ :log,
15
+ to: :instance
10
16
  end
11
17
  end
12
18
  end
@@ -1,24 +1,32 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'uri'
4
- require 'json'
3
+ require "uri"
4
+ require "json"
5
+ require "httpx"
5
6
 
6
7
  module SlackWebhookLogger
7
8
  class RequestIO
8
- def self.close
9
- true
10
- end
9
+ class << self
10
+ def close
11
+ true
12
+ end
13
+
14
+ def write(hash)
15
+ return if hash.blank?
11
16
 
12
- def self.write(hash)
13
- return if hash.blank?
17
+ return if SlackWebhookLogger.ignore_patterns.any? { |ignore_pattern| hash[:text].match(ignore_pattern) }
14
18
 
15
- return if SlackWebhookLogger.ignore_patterns.any? { |ignore_pattern| hash[:text].match(ignore_pattern) }
19
+ response = HTTPX.post(SlackWebhookLogger.webhook_uri.to_s, form: hash)
16
20
 
17
- payload = hash.to_json
21
+ return if (200..299).cover?(response.status)
18
22
 
19
- req = Net::HTTP::Post.new(SlackWebhookLogger.webhook_uri.path)
20
- req.set_form_data(payload: payload)
21
- SlackWebhookLogger.https.request(req)
23
+ case response
24
+ when HTTPX::ErrorResponse
25
+ warn(response)
26
+ else
27
+ warn(response.body)
28
+ end
29
+ end
22
30
  end
23
31
  end
24
32
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module SlackWebhookLogger
4
- VERSION = '0.3.1'
4
+ VERSION = "0.5.0"
5
5
  end
@@ -1,15 +1,15 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'active_support/logger'
4
- require 'active_support/core_ext/module/attribute_accessors'
3
+ require "active_support/logger"
4
+ require "active_support/core_ext/module/attribute_accessors"
5
5
 
6
- require 'net/http'
7
- require 'net/https'
8
- require 'uri'
6
+ require "net/http"
7
+ require "net/https"
8
+ require "uri"
9
9
 
10
- require 'slack_webhook_logger/logger'
11
- require 'slack_webhook_logger/formatter'
12
- require 'slack_webhook_logger/request_io'
10
+ require "slack_webhook_logger/logger"
11
+ require "slack_webhook_logger/formatter"
12
+ require "slack_webhook_logger/request_io"
13
13
 
14
14
  module SlackWebhookLogger
15
15
  # Can be modified in Rails app
@@ -23,23 +23,24 @@ module SlackWebhookLogger
23
23
  mattr_reader :logger
24
24
  mattr_reader :https
25
25
 
26
- # rubocop:disable Style/ClassVars
27
- def self.setup
28
- @@logger = SlackWebhookLogger::Logger.new(SlackWebhookLogger::RequestIO)
26
+ class << self
27
+ # rubocop:disable Style/ClassVars
28
+ def setup
29
+ @@logger = SlackWebhookLogger::Logger.new(SlackWebhookLogger::RequestIO)
29
30
 
30
- yield self
31
+ yield self
31
32
 
32
- @@logger.formatter = @@formatter || SlackWebhookLogger::Formatter.new
33
- @@logger.level = @@level || :warn
33
+ @@logger.formatter = @@formatter || SlackWebhookLogger::Formatter.new
34
+ @@logger.level = @@level || :warn
34
35
 
35
- @@webhook_uri = URI.parse(@@webhook_url)
36
- https = Net::HTTP.new(@@webhook_uri.host, @@webhook_uri.port)
37
- https.use_ssl = true
38
- https.verify_mode = OpenSSL::SSL::VERIFY_PEER
36
+ begin
37
+ @@webhook_uri = URI.parse(@@webhook_url)
38
+ rescue URI::InvalidURIError
39
+ raise ArgumentError, "Invalid URI for webhook_url"
40
+ end
39
41
 
40
- @@https = https
41
-
42
- @@ignore_patterns ||= []
42
+ @@ignore_patterns ||= []
43
+ end
44
+ # rubocop:enable Style/ClassVars
43
45
  end
44
- # rubocop:enable Style/ClassVars
45
46
  end
@@ -1,32 +1,33 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require_relative 'lib/slack_webhook_logger/version'
3
+ require_relative "lib/slack_webhook_logger/version"
4
4
 
5
5
  Gem::Specification.new do |spec|
6
- spec.name = 'slack_webhook_logger'
6
+ spec.name = "slack_webhook_logger"
7
7
  spec.version = SlackWebhookLogger::VERSION
8
- spec.authors = ['Garen J. Torikian']
9
- spec.email = ['gjtorikian@gmail.com']
8
+ spec.authors = ["Garen J. Torikian"]
9
+ spec.email = ["gjtorikian@gmail.com"]
10
10
 
11
- spec.summary = 'A slim wrapper for posting to Rails logs to Slack'
12
- spec.homepage = 'https://github.com/gjtorikian/slack_webhook_logger'
13
- spec.license = 'MIT'
14
- spec.required_ruby_version = Gem::Requirement.new('~> 3.0')
11
+ spec.summary = "A slim wrapper for posting to Rails logs to Slack"
12
+ spec.homepage = "https://github.com/gjtorikian/slack_webhook_logger"
13
+ spec.license = "MIT"
14
+ spec.required_ruby_version = Gem::Requirement.new("~> 3.0")
15
15
 
16
- spec.metadata['homepage_uri'] = spec.homepage
17
- spec.metadata['source_code_uri'] = spec.homepage
16
+ spec.metadata["homepage_uri"] = spec.homepage
17
+ spec.metadata["source_code_uri"] = spec.homepage
18
18
 
19
19
  # Specify which files should be added to the gem when it is released.
20
20
  # The `git ls-files -z` loads the files in the RubyGem that have been added into git.
21
21
  spec.files = Dir.chdir(File.expand_path(__dir__)) do
22
- `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
22
+ %x(git ls-files -z).split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
23
23
  end
24
24
 
25
- spec.require_paths = ['lib']
25
+ spec.require_paths = ["lib"]
26
26
 
27
- spec.add_dependency 'activesupport', '>= 5.0', '< 8.0'
28
- spec.add_dependency 'railties', '>= 5.0', '< 8.0' # for the generators
27
+ spec.add_dependency("activesupport", ">= 5.0", "< 8.0")
28
+ spec.add_dependency("httpx", "~> 0.20")
29
+ spec.add_dependency("railties", ">= 5.0", "< 8.0") # for the generators
29
30
  spec.metadata = {
30
- 'rubygems_mfa_required' => 'true'
31
+ "rubygems_mfa_required" => "true",
31
32
  }
32
33
  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.3.1
4
+ version: 0.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Garen J. Torikian
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-12-19 00:00:00.000000000 Z
11
+ date: 2023-07-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -30,6 +30,20 @@ dependencies:
30
30
  - - "<"
31
31
  - !ruby/object:Gem::Version
32
32
  version: '8.0'
33
+ - !ruby/object:Gem::Dependency
34
+ name: httpx
35
+ requirement: !ruby/object:Gem::Requirement
36
+ requirements:
37
+ - - "~>"
38
+ - !ruby/object:Gem::Version
39
+ version: '0.20'
40
+ type: :runtime
41
+ prerelease: false
42
+ version_requirements: !ruby/object:Gem::Requirement
43
+ requirements:
44
+ - - "~>"
45
+ - !ruby/object:Gem::Version
46
+ version: '0.20'
33
47
  - !ruby/object:Gem::Dependency
34
48
  name: railties
35
49
  requirement: !ruby/object:Gem::Requirement
@@ -50,7 +64,7 @@ dependencies:
50
64
  - - "<"
51
65
  - !ruby/object:Gem::Version
52
66
  version: '8.0'
53
- description:
67
+ description:
54
68
  email:
55
69
  - gjtorikian@gmail.com
56
70
  executables: []
@@ -58,10 +72,16 @@ extensions: []
58
72
  extra_rdoc_files: []
59
73
  files:
60
74
  - ".github/FUNDING.yml"
61
- - ".github/workflows/ci.yml"
75
+ - ".github/dependabot.yml"
76
+ - ".github/workflows/automerge.yml"
62
77
  - ".github/workflows/lint.yml"
78
+ - ".github/workflows/release.yml"
79
+ - ".github/workflows/test.yml"
63
80
  - ".gitignore"
64
81
  - ".rubocop.yml"
82
+ - ".ruby-version"
83
+ - ".vscode/settings.json"
84
+ - CHANGELOG.md
65
85
  - CODE_OF_CONDUCT.md
66
86
  - Gemfile
67
87
  - Gemfile.lock
@@ -83,7 +103,7 @@ licenses:
83
103
  - MIT
84
104
  metadata:
85
105
  rubygems_mfa_required: 'true'
86
- post_install_message:
106
+ post_install_message:
87
107
  rdoc_options: []
88
108
  require_paths:
89
109
  - lib
@@ -98,8 +118,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
98
118
  - !ruby/object:Gem::Version
99
119
  version: '0'
100
120
  requirements: []
101
- rubygems_version: 3.2.33
102
- signing_key:
121
+ rubygems_version: 3.4.15
122
+ signing_key:
103
123
  specification_version: 4
104
124
  summary: A slim wrapper for posting to Rails logs to Slack
105
125
  test_files: []
@@ -1,28 +0,0 @@
1
- name: Ruby CI
2
-
3
- on:
4
- push:
5
-
6
- jobs:
7
- test:
8
- runs-on: ubuntu-latest
9
-
10
- strategy:
11
- fail-fast: false
12
- matrix:
13
- ruby-version: [3.0.2]
14
-
15
- steps:
16
- - uses: actions/checkout@v2
17
-
18
- - name: Set up Ruby ${{ matrix.ruby-version }}
19
- uses: ruby/setup-ruby@v1
20
- with:
21
- ruby-version: ${{ matrix.ruby-version }}
22
- bundler-cache: true
23
-
24
- - name: Install dependencies
25
- run: bundle install
26
-
27
- - name: Run tests
28
- run: bundle exec rake