devise_slack_notifiable 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: 405a786a39943e716f064ab9fbb0f40f93c0d48b6e8ebb9bd9890041ecc85ef7
4
- data.tar.gz: a39dbf5d465f6b475e4c408dc80ccb27227806a449da6925348c8e728ae279c3
3
+ metadata.gz: b99296dbdd359b33c21ff11fd912a5079072e16d448b0ab0204a551663c3cd3d
4
+ data.tar.gz: 3759859e2a7b792e05094887c0057afe6f2ddf1e30fd05b3618c615b52e0bced
5
5
  SHA512:
6
- metadata.gz: 1476715f8668cc552ac89fa267b6e2e5f133381b24f2454a0b93c5356b3de3de47a1222c4b845c7842860386bb5df7e35eff68767e955a55574caa3091df62c2
7
- data.tar.gz: 27a0e40a15f0fe22ba041278e503287b5619518ccec0490a611137325cb3fd6ca41f939af421dbb7bfe436fed9cc52bcc6ccf8b0f60ff0874dcf690b3235825e
6
+ metadata.gz: 5043d05915f13b686b7d71921dd9c0411ed4a39d5da8ae323f2b13cfd2a69834b78ccc6153975a2af5bb47529ddf65056d49fd09f6cfd64e82469018f677934e
7
+ data.tar.gz: 8566eeef5f0658b6de2483b97cb3f629c47c2db5ac65efea4cb0d63d89ecb2f13912c1b1a8b05e7c5b39b96f6d9b556c8d6dec6a55a97584655a1e7b4a44502d
@@ -1,9 +1,9 @@
1
- root = true
2
-
3
- [*]
4
- indent_style = space
5
- indent_size = 2
6
- end_of_line = lf
7
- charset = utf-8
8
- trim_trailing_whitespace = true
9
- insert_final_newline = true
1
+ root = true
2
+
3
+ [*]
4
+ indent_style = space
5
+ indent_size = 2
6
+ end_of_line = lf
7
+ charset = utf-8
8
+ trim_trailing_whitespace = true
9
+ insert_final_newline = true
@@ -0,0 +1,28 @@
1
+ name: Ruby Gem
2
+
3
+ on:
4
+ release:
5
+ types: [published]
6
+
7
+ jobs:
8
+ build:
9
+ name: Build + Publish
10
+ runs-on: ubuntu-latest
11
+
12
+ steps:
13
+ - uses: actions/checkout@v2
14
+ - name: Set up Ruby 2.6
15
+ uses: actions/setup-ruby@v1
16
+ with:
17
+ version: 2.6.x
18
+
19
+ - name: Publish to RubyGems
20
+ run: |
21
+ mkdir -p $HOME/.gem
22
+ touch $HOME/.gem/credentials
23
+ chmod 0600 $HOME/.gem/credentials
24
+ printf -- "---\n:rubygems_api_key: ${GEM_HOST_API_KEY}\n" > $HOME/.gem/credentials
25
+ gem build *.gemspec
26
+ gem push *.gem
27
+ env:
28
+ GEM_HOST_API_KEY: ${{secrets.RUBYGEMS_AUTH_TOKEN}}
@@ -0,0 +1,27 @@
1
+ name: Ruby
2
+
3
+ on:
4
+ push:
5
+ branches: [ master ]
6
+ pull_request:
7
+ branches: [ master ]
8
+
9
+ jobs:
10
+ test:
11
+
12
+ runs-on: ubuntu-latest
13
+
14
+ steps:
15
+ - uses: actions/checkout@v2
16
+ - name: Set up Ruby
17
+ uses: ruby/setup-ruby@v1
18
+ with:
19
+ ruby-version: 2.6
20
+
21
+ - name: Install dependencies
22
+ run: bundle install
23
+
24
+ - name: Run tests and send coverage
25
+ run: bundle exec rspec
26
+ env:
27
+ CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}
data/.gitignore CHANGED
@@ -6,6 +6,8 @@
6
6
  /pkg/
7
7
  /spec/reports/
8
8
  /tmp/
9
+ /out/
10
+ *.gem
9
11
 
10
12
  # rspec failure tracking
11
13
  .rspec_status
@@ -4,9 +4,3 @@ cache: bundler
4
4
  rvm:
5
5
  - 2.6.5
6
6
  before_install: gem install bundler -v 2.1.4
7
-
8
- deploy:
9
- provider: rubygems
10
- api_key: "YOUR API KEY"
11
- on:
12
- tags: true
data/Gemfile CHANGED
@@ -8,3 +8,4 @@ gemspec
8
8
  gem 'rake', '~> 12.0'
9
9
  gem 'rspec', '~> 3.0'
10
10
  gem 'slack-notifier'
11
+ gem 'codecov'
@@ -1,7 +1,8 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- devise_slack_notifiable (0.1.0)
4
+ devise_slack_notifiable (0.2.0)
5
+ devise
5
6
  rails
6
7
  slack-notifier
7
8
 
@@ -63,15 +64,28 @@ GEM
63
64
  minitest (~> 5.1)
64
65
  tzinfo (~> 1.1)
65
66
  zeitwerk (~> 2.2, >= 2.2.2)
67
+ bcrypt (3.1.13)
66
68
  builder (3.2.4)
69
+ codecov (0.1.17)
70
+ json
71
+ simplecov
72
+ url
67
73
  concurrent-ruby (1.1.6)
68
74
  crass (1.0.6)
75
+ devise (4.7.2)
76
+ bcrypt (~> 3.0)
77
+ orm_adapter (~> 0.1)
78
+ railties (>= 4.1.0)
79
+ responders
80
+ warden (~> 1.2.3)
69
81
  diff-lcs (1.3)
82
+ docile (1.3.2)
70
83
  erubi (1.9.0)
71
84
  globalid (0.4.2)
72
85
  activesupport (>= 4.2.0)
73
86
  i18n (1.8.3)
74
87
  concurrent-ruby (~> 1.0)
88
+ json (2.3.0)
75
89
  loofah (2.6.0)
76
90
  crass (~> 1.0.2)
77
91
  nokogiri (>= 1.5.9)
@@ -87,6 +101,7 @@ GEM
87
101
  nio4r (2.5.2)
88
102
  nokogiri (1.10.9-x64-mingw32)
89
103
  mini_portile2 (~> 2.4.0)
104
+ orm_adapter (0.5.0)
90
105
  rack (2.2.3)
91
106
  rack-test (1.1.0)
92
107
  rack (>= 1.0, < 3)
@@ -117,6 +132,9 @@ GEM
117
132
  rake (>= 0.8.7)
118
133
  thor (>= 0.20.3, < 2.0)
119
134
  rake (12.3.3)
135
+ responders (3.0.1)
136
+ actionpack (>= 5.0)
137
+ railties (>= 5.0)
120
138
  rspec (3.9.0)
121
139
  rspec-core (~> 3.9.0)
122
140
  rspec-expectations (~> 3.9.0)
@@ -130,8 +148,12 @@ GEM
130
148
  diff-lcs (>= 1.2.0, < 2.0)
131
149
  rspec-support (~> 3.9.0)
132
150
  rspec-support (3.9.3)
151
+ simplecov (0.18.5)
152
+ docile (~> 1.1)
153
+ simplecov-html (~> 0.11)
154
+ simplecov-html (0.12.2)
133
155
  slack-notifier (2.3.2)
134
- sprockets (3.7.2)
156
+ sprockets (4.0.2)
135
157
  concurrent-ruby (~> 1.0)
136
158
  rack (> 1, < 3)
137
159
  sprockets-rails (3.2.1)
@@ -142,6 +164,9 @@ GEM
142
164
  thread_safe (0.3.6)
143
165
  tzinfo (1.2.7)
144
166
  thread_safe (~> 0.1)
167
+ url (0.3.2)
168
+ warden (1.2.8)
169
+ rack (>= 2.0.6)
145
170
  websocket-driver (0.7.2)
146
171
  websocket-extensions (>= 0.1.0)
147
172
  websocket-extensions (0.1.5)
@@ -151,6 +176,7 @@ PLATFORMS
151
176
  x64-mingw32
152
177
 
153
178
  DEPENDENCIES
179
+ codecov
154
180
  devise_slack_notifiable!
155
181
  rake (~> 12.0)
156
182
  rspec (~> 3.0)
data/README.md CHANGED
@@ -2,6 +2,10 @@
2
2
 
3
3
  Devise slack notifications gem. It posts message after registration and confirmation (if Devise confirmations strategy is enabled).
4
4
 
5
+ [![Gem Version](https://badge.fury.io/rb/devise_slack_notifiable.svg)](https://badge.fury.io/rb/devise_slack_notifiable)
6
+ [![codecov](https://codecov.io/gh/invoicity/devise_slack_notifiable/branch/master/graph/badge.svg)](https://codecov.io/gh/invoicity/devise_slack_notifiable)
7
+ [![ruby](https://github.com/invoicity/devise_slack_notifiable/workflows/Ruby/badge.svg)](https://github.com/invoicity/devise_slack_notifiable/actions)
8
+
5
9
  ## Installation
6
10
 
7
11
  Add this line to your application's Gemfile:
data/Rakefile CHANGED
@@ -1,8 +1,8 @@
1
- # frozen_string_literal: true
2
-
3
- require 'bundler/gem_tasks'
4
- require 'rspec/core/rake_task'
5
-
6
- RSpec::Core::RakeTask.new(:spec)
7
-
8
- task default: :spec
1
+ # frozen_string_literal: true
2
+
3
+ require 'bundler/gem_tasks'
4
+ require 'rspec/core/rake_task'
5
+
6
+ RSpec::Core::RakeTask.new(:spec)
7
+
8
+ task default: :spec
@@ -21,6 +21,7 @@ Gem::Specification.new do |spec|
21
21
  spec.metadata['changelog_uri'] = 'https://github.com/invoicity/devise_slack_notifiable/releases'
22
22
 
23
23
  spec.add_dependency 'rails'
24
+ spec.add_dependency 'devise'
24
25
  spec.add_dependency 'slack-notifier'
25
26
 
26
27
  # Specify which files should be added to the gem when it is released.
@@ -2,20 +2,26 @@
2
2
 
3
3
  module Devise
4
4
  module Models
5
+ # Slack notifications for devise models!
5
6
  module SlackNotifiable
6
7
  extend ActiveSupport::Concern
7
8
 
8
9
  included do
10
+ # Rails hook
11
+ # Triggers slack registration message
9
12
  after_create :registration_notification
10
13
 
11
14
  protected
12
15
 
16
+ # Devise hook
17
+ # Triggers slack confirmation message
13
18
  def after_confirmation
14
19
  confirmation_notification
15
20
 
16
- super
21
+ super if defined?(super)
17
22
  end
18
23
 
24
+ # Sends slack notification if confirmation_message_enabled
19
25
  def confirmation_notification
20
26
  return unless DeviseSlackNotifiable.configuration.confirmation_message_enabled
21
27
 
@@ -24,6 +30,7 @@ module Devise
24
30
  )
25
31
  end
26
32
 
33
+ # Sends slack notification
27
34
  def registration_notification
28
35
  send_slack_notification(
29
36
  DeviseSlackNotifiable.configuration.registration_message_formatter
@@ -32,6 +39,9 @@ module Devise
32
39
 
33
40
  private
34
41
 
42
+ # Creates notifier and sends message
43
+ #
44
+ # @param [Proc] formatter
35
45
  def send_slack_notification(formatter)
36
46
  notifier = DeviseSlackNotifiable::Notifier.new
37
47
  notifier.send_message(self, formatter)
@@ -11,6 +11,9 @@ module DeviseSlackNotifiable
11
11
  attr_accessor :configuration
12
12
  end
13
13
 
14
+ # Configuration block
15
+ #
16
+ # @yield
14
17
  def self.configure
15
18
  self.configuration ||= DeviseSlackNotifiable::Configuration.new
16
19
  yield(configuration)
@@ -1,6 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module DeviseSlackNotifiable
4
+ # Configuration container
4
5
  class Configuration
5
6
  attr_accessor :enabled,
6
7
  :slack_webhook,
@@ -9,6 +10,9 @@ module DeviseSlackNotifiable
9
10
  :confirmation_message_enabled,
10
11
  :context_fields
11
12
 
13
+ # DeviseSlackNotifiable::Configuration constructor.
14
+ #
15
+ # Sets default values
12
16
  def initialize
13
17
  @enabled = false
14
18
  @slack_webhook = nil
@@ -2,6 +2,8 @@
2
2
 
3
3
  module DeviseSlackNotifiable
4
4
  module Errors
5
+ # Configuration error
6
+ # raised when properties are missing
5
7
  class Configuration < StandardError; end
6
8
  end
7
9
  end
@@ -3,7 +3,13 @@
3
3
  require 'slack-notifier'
4
4
 
5
5
  module DeviseSlackNotifiable
6
+ # Module <-> Slack communication layer
7
+ # and payload builder
6
8
  class Notifier
9
+
10
+ # DeviseSlackNotifiable::Notifier constructor.
11
+ #
12
+ # Creates Slack::Notifier instance
7
13
  def initialize
8
14
  return unless enabled?
9
15
 
@@ -31,18 +37,33 @@ module DeviseSlackNotifiable
31
37
 
32
38
  attr_reader :client
33
39
 
40
+ # Integration enabled?
41
+ #
42
+ # @return [Boolean]
34
43
  def enabled?
35
44
  DeviseSlackNotifiable.configuration.enabled
36
45
  end
37
46
 
47
+ # Webhook URL
48
+ #
49
+ # @return [String, NilClass]
38
50
  def webhook
39
51
  DeviseSlackNotifiable.configuration.slack_webhook
40
52
  end
41
53
 
54
+ # Context fields
55
+ #
56
+ # @return [Array]
42
57
  def context_fields
43
58
  DeviseSlackNotifiable.configuration.context_fields
44
59
  end
45
60
 
61
+ # Message builder
62
+ #
63
+ # @param [String] message
64
+ # @param [ActiveRecord::Base] entity
65
+ #
66
+ # @return [Hash]
46
67
  def formatter(message, entity)
47
68
  {
48
69
  blocks: [
@@ -54,9 +75,6 @@ module DeviseSlackNotifiable
54
75
  emoji: true
55
76
  }
56
77
  },
57
- {
58
- type: 'divider'
59
- },
60
78
  {
61
79
  type: 'section',
62
80
  text: {
@@ -1,5 +1,5 @@
1
- # frozen_string_literal: true
2
-
3
- module DeviseSlackNotifiable
4
- VERSION = '0.1.0'
5
- end
1
+ # frozen_string_literal: true
2
+
3
+ module DeviseSlackNotifiable
4
+ VERSION = '0.2.0'
5
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: devise_slack_notifiable
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
  - whitemerry
@@ -24,6 +24,20 @@ dependencies:
24
24
  - - ">="
25
25
  - !ruby/object:Gem::Version
26
26
  version: '0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: devise
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
27
41
  - !ruby/object:Gem::Dependency
28
42
  name: slack-notifier
29
43
  requirement: !ruby/object:Gem::Requirement
@@ -46,6 +60,8 @@ extensions: []
46
60
  extra_rdoc_files: []
47
61
  files:
48
62
  - ".editorconfig"
63
+ - ".github/workflows/gem-push.yml"
64
+ - ".github/workflows/ruby.yml"
49
65
  - ".gitignore"
50
66
  - ".rspec"
51
67
  - ".travis.yml"