activity_notification 1.2.0 → 1.2.1

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
  SHA1:
3
- metadata.gz: 6a65b89d38b765fb3308dddba4204f205bfb67c2
4
- data.tar.gz: b44aeebf83a7718a987e97b3bb62bf3011cd7b39
3
+ metadata.gz: 10573a031431162243ea0c47762d6a23f2a1c5fc
4
+ data.tar.gz: 9d79ff21207045e1f8adb3c6154749b25f4cfbfc
5
5
  SHA512:
6
- metadata.gz: af081cfffaf148d44c78e0fb3fddebfe213cebb970f585ac207c59fa62c96a2b5bd80b1dd720c7da148aa9e75a36556d6bb97ff4291a83bff4fd6905b96648ce
7
- data.tar.gz: 815e00820bdf7d1f5f0486c00ee0e2d7eacd73b51d90b1f3ee1d6809cf875c1af3b24e9a44191c4e64f20cab04d1c179ff3814717a54b338e84c5af5dca0b27f
6
+ metadata.gz: 099d83aa693ea68f03ea346bc8d58f9ad03f812dd28b78ddd11e4ca31c18424949a3e1abe36ef5da77b1d8c39097211b5ca58dd852855bff831809801c179af7
7
+ data.tar.gz: c388ceeae7685591b3e8585efcf6ec597e5a7a343b48f42b4ad1d9bf960c3a31a17397e7071b9b95855df42cb653ee174642313edcff914a28444d22a3dfdc18
data/.gitignore CHANGED
@@ -18,6 +18,7 @@
18
18
 
19
19
  # Used by dotenv library to load environment variables.
20
20
  # .env
21
+ /spec/rails_app/.env
21
22
 
22
23
  ## Specific to RubyMotion:
23
24
  .dat*
data/CHANGELOG.md CHANGED
@@ -1,3 +1,13 @@
1
+ ## 1.2.1 / 2017-01-06
2
+ [Full Changelog](http://github.com/simukappu/activity_notification/compare/v1.2.0...v1.2.1)
3
+
4
+ Enhancements:
5
+ * Support default Slack optional target with slack-notifier 2.0.0
6
+
7
+ Breaking Changes:
8
+
9
+ * Rename :slack_name initializing parameter and template parameter of default Slack optional target to :target_username
10
+
1
11
  ## 1.2.0 / 2017-01-06
2
12
  [Full Changelog](http://github.com/simukappu/activity_notification/compare/v1.1.0...v1.2.0)
3
13
 
data/Gemfile CHANGED
@@ -14,3 +14,5 @@ group :test do
14
14
  gem 'timecop'
15
15
  gem 'coveralls', require: false
16
16
  end
17
+
18
+ gem 'dotenv-rails', groups: [:development, :test]
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- activity_notification (1.2.0)
4
+ activity_notification (1.2.1)
5
5
  activerecord (>= 4.2.0)
6
6
  i18n (>= 0.5.0)
7
7
  jquery-rails (>= 3.1.1)
@@ -52,13 +52,13 @@ GEM
52
52
  railties (>= 3.0)
53
53
  rspec-rails (>= 2.2)
54
54
  arel (7.1.4)
55
- aws-sdk (2.6.43)
56
- aws-sdk-resources (= 2.6.43)
57
- aws-sdk-core (2.6.43)
55
+ aws-sdk (2.6.44)
56
+ aws-sdk-resources (= 2.6.44)
57
+ aws-sdk-core (2.6.44)
58
58
  aws-sigv4 (~> 1.0)
59
59
  jmespath (~> 1.0)
60
- aws-sdk-resources (2.6.43)
61
- aws-sdk-core (= 2.6.43)
60
+ aws-sdk-resources (2.6.44)
61
+ aws-sdk-core (= 2.6.44)
62
62
  aws-sigv4 (1.0.0)
63
63
  bcrypt (3.1.11)
64
64
  builder (3.2.2)
@@ -80,6 +80,10 @@ GEM
80
80
  warden (~> 1.2.3)
81
81
  diff-lcs (1.2.5)
82
82
  docile (1.1.5)
83
+ dotenv (2.1.1)
84
+ dotenv-rails (2.1.1)
85
+ dotenv (= 2.1.1)
86
+ railties (>= 4.0, < 5.1)
83
87
  erubis (2.7.0)
84
88
  factory_girl (4.8.0)
85
89
  activesupport (>= 3.0.0)
@@ -106,7 +110,7 @@ GEM
106
110
  mini_portile2 (2.1.0)
107
111
  minitest (5.10.1)
108
112
  nio4r (1.2.1)
109
- nokogiri (1.7.0)
113
+ nokogiri (1.7.0.1)
110
114
  mini_portile2 (~> 2.1.0)
111
115
  orm_adapter (0.5.0)
112
116
  rack (2.0.1)
@@ -164,7 +168,7 @@ GEM
164
168
  json (>= 1.8, < 3)
165
169
  simplecov-html (~> 0.10.0)
166
170
  simplecov-html (0.10.0)
167
- slack-notifier (1.5.1)
171
+ slack-notifier (2.0.0)
168
172
  sprockets (3.7.1)
169
173
  concurrent-ruby (~> 1.0)
170
174
  rack (> 1, < 3)
@@ -172,7 +176,7 @@ GEM
172
176
  actionpack (>= 4.0)
173
177
  activesupport (>= 4.0)
174
178
  sprockets (>= 3.0.0)
175
- sqlite3 (1.3.12)
179
+ sqlite3 (1.3.13)
176
180
  term-ansicolor (1.4.0)
177
181
  tins (~> 1.0)
178
182
  thor (0.19.4)
@@ -201,13 +205,14 @@ DEPENDENCIES
201
205
  bullet
202
206
  coveralls
203
207
  devise (~> 4.2.0)
208
+ dotenv-rails
204
209
  factory_girl_rails (~> 4.8.0)
205
210
  rails (~> 5.0.0)
206
211
  rails-controller-testing
207
212
  rspec-rails (~> 3.5.1)
208
213
  simplecov (~> 0.12.0)
209
- slack-notifier (~> 1.5.1)
210
- sqlite3 (~> 1.3.12)
214
+ slack-notifier (>= 1.5.1)
215
+ sqlite3 (~> 1.3.13)
211
216
  timecop
212
217
  yard (~> 0.9.5)
213
218
  yard-activesupport-concern (~> 0.0.1)
data/README.md CHANGED
@@ -35,7 +35,7 @@
35
35
  <kbd>![subscription-management-image](https://raw.githubusercontent.com/simukappu/activity_notification/images/activity_notification_subscription_management_with_optional_targets.png)</kbd>
36
36
 
37
37
  ### Amazon SNS as optional notification target
38
- <kbd>![optional-target-amazon-sns-email-image](https://raw.githubusercontent.com/simukappu/activity_notification/images/activity_notification_optional_target_amazon_sns_email.png)</kbd>
38
+ <kbd>![optional-target-amazon-sns-email-image](https://raw.githubusercontent.com/simukappu/activity_notification/images/activity_notification_optional_target_amazon_sns.png)</kbd>
39
39
 
40
40
  ### Slack as optional notification target
41
41
  <kbd>![optional-target-slack-image](https://raw.githubusercontent.com/simukappu/activity_notification/images/activity_notification_optional_target_slack.png)</kbd>
@@ -61,22 +61,22 @@
61
61
  4. [i18n for notifications](#i18n-for-notifications)
62
62
  3. [Functions](#functions)
63
63
  1. [Email notification](#email-notification)
64
- 1. [Setup mailer](#setup-mailer)
64
+ 1. [Mailer setup](#mailer-setup)
65
65
  2. [Email templates](#email-templates)
66
66
  3. [i18n for email](#i18n-for-email)
67
67
  2. [Batch email notification](#batch-email-notification)
68
- 1. [Setup batch mailer](#setup-batch-mailer)
68
+ 1. [Batch mailer setup](#batch-mailer-setup)
69
69
  2. [Batch email templates](#batch-email-templates)
70
70
  3. [i18n for batch email](#i18n-for-batch-email)
71
71
  3. [Grouping notifications](#grouping-notifications)
72
72
  4. [Subscription management](#subscription-management)
73
- 1. [Setup subscriptions](#setup-subscriptions)
74
- 2. [Manage subscriptions](#manage-subscriptions)
75
- 3. [Customize Subscriptions](#customize-subscriptions)
73
+ 1. [Configuring subscriptions](#configuring-subscriptions)
74
+ 2. [Managing subscriptions](#managing-subscriptions)
75
+ 3. [Customizing subscriptions](#customizing-subscriptions)
76
76
  5. [Integration with Devise](#integration-with-devise)
77
77
  6. [Optional notification targets](#optional-notification-targets)
78
- 1. [Setup optional targets](#setup-optional-targets)
79
- 2. [Customizing message format](#Customizing-message-format)
78
+ 1. [Configuring optional targets](#configuring-optional-targets)
79
+ 2. [Customizing message format](#customizing-message-format)
80
80
  3. [Amazon SNS as optional target](#amazon-sns-as-optional-target)
81
81
  4. [Slack as optional target](#slack-as-optional-target)
82
82
  5. [Developing custom optional targets](#developing-custom-optional-targets)
@@ -414,7 +414,7 @@ This structure is valid for notifications with keys `"notification.comment.reply
414
414
 
415
415
  `activity_notification` provides email notification to the notification targets.
416
416
 
417
- #### Setup mailer
417
+ #### Mailer setup
418
418
 
419
419
  Set up SMTP server configuration for `ActionMailer`. Then, you need to set up the default URL options for the `activity_notification` mailer in each environment. Here is a possible configuration for `config/environments/development.rb`:
420
420
 
@@ -481,7 +481,7 @@ notification:
481
481
 
482
482
  `activity_notification` provides batch email notification to the notification targets. You can send notification email daily, hourly or weekly and so on with a scheduler like `whenever`.
483
483
 
484
- #### Setup batch mailer
484
+ #### Batch mailer setup
485
485
 
486
486
  Set up SMTP server configuration for `ActionMailer` and the default URL options for the `activity_notification` mailer in each environment.
487
487
 
@@ -591,7 +591,7 @@ Then, you will see `Kevin and 7 other users posted 10 comments to your article"`
591
591
 
592
592
  `activity_notification` provides the function for subscription management of notifications and notification email.
593
593
 
594
- #### Setup subscriptions
594
+ #### Configuring subscriptions
595
595
 
596
596
  Subscription management is disabled as default. You can configure to enable subscription management in initializer `activity_notification.rb`.
597
597
 
@@ -617,7 +617,7 @@ $ bin/rake db:migrate
617
617
  ```
618
618
 
619
619
 
620
- #### Manage subscriptions
620
+ #### Managing subscriptions
621
621
 
622
622
  Subscriptions are managed by `Subscription` model record which belongs to target and key of the notification.
623
623
  `Subscription#subscribing` manages subscription of notifications.
@@ -662,7 +662,7 @@ user.find_or_create_subscription('comment.reply').unsubscribe
662
662
  user.find_or_create_subscription('comment.reply').unsubscribe_to_email
663
663
  ```
664
664
 
665
- #### Customize subscriptions
665
+ #### Customizing subscriptions
666
666
 
667
667
  `activity_notification` provides basic controllers and views to manage the subscriptions.
668
668
 
@@ -752,7 +752,7 @@ In this example `activity_notification` will confirm the `user` who `admin` belo
752
752
 
753
753
  `activity_notification` supports configurable optional notification targets like Amazon SNS, Slack, SMS and so on.
754
754
 
755
- #### Setup optional targets
755
+ #### Configuring optional targets
756
756
 
757
757
  `activity_notification` provides default optional target implementation for Amazon SNS and Slack.
758
758
  You can develop any optional target classes which extends `ActivityNotification::OptionalTarget::Base`, and configure them to notifiable model by `acts_as_notifiable` like this.
@@ -835,7 +835,7 @@ First, add `slack-notifier` gem to your Gemfile and create Incoming WebHooks in
835
835
  gem 'slack-notifier'
836
836
  ```
837
837
 
838
- Then, write `require 'activity_notification/optional_targets/slack'` statement in your notifiable model and set `ActivityNotification::OptionalTarget::Slack` to `acts_as_notifiable` with `:webhook_url` and `:slack_name` initializing parameters. `:webhook_url` is created WebHook URL and required, `:slack_name` is target's slack user name as String value, symbol method name or lambda function and is optional.
838
+ Then, write `require 'activity_notification/optional_targets/slack'` statement in your notifiable model and set `ActivityNotification::OptionalTarget::Slack` to `acts_as_notifiable` with `:webhook_url` and `:target_username` initializing parameters. `:webhook_url` is created WebHook URL and required, `:target_username` is target's slack user name as String value, symbol method name or lambda function and is optional.
839
839
  Any other options for `Slack::Notifier.new` are available as initializing parameters. See [Github slack-notifier](https://github.com/stevenosloan/slack-notifier) and [API Reference of Class: Slack::Notifier](http://www.rubydoc.info/gems/slack-notifier/1.5.1/Slack/Notifier) for more details.
840
840
 
841
841
  ```ruby
@@ -845,7 +845,7 @@ class Comment < ActiveRecord::Base
845
845
  optional_targets: {
846
846
  ActivityNotification::OptionalTarget::Slack => {
847
847
  webhook_url: 'https://hooks.slack.com/services/XXXXXXXXX/XXXXXXXXX/XXXXXXXXXXXXXXXXXXXXXXXX',
848
- slack_name: :slack_name, channel: 'activity_notification', username: 'ActivityNotification', icon_emoji: ":ghost:"
848
+ target_username: :slack_username, channel: 'activity_notification', username: 'ActivityNotification', icon_emoji: ":ghost:"
849
849
  }
850
850
  }
851
851
  end
@@ -25,7 +25,7 @@ Gem::Specification.new do |s|
25
25
  s.add_dependency 'activerecord', '>= 4.2.0'
26
26
  s.add_dependency 'jquery-rails', '>= 3.1.1'
27
27
 
28
- s.add_development_dependency 'sqlite3', '~> 1.3.12'
28
+ s.add_development_dependency 'sqlite3', '~> 1.3.13'
29
29
  s.add_development_dependency 'rspec-rails', '~> 3.5.1'
30
30
  s.add_development_dependency 'factory_girl_rails', '~> 4.8.0'
31
31
  s.add_development_dependency 'simplecov', '~> 0.12.0'
@@ -33,5 +33,5 @@ Gem::Specification.new do |s|
33
33
  s.add_development_dependency 'yard-activesupport-concern', '~> 0.0.1'
34
34
  s.add_development_dependency 'devise', '~> 4.2.0'
35
35
  s.add_development_dependency 'aws-sdk', '~> 2'
36
- s.add_development_dependency 'slack-notifier', '~> 1.5.1'
36
+ s.add_development_dependency 'slack-notifier', '>= 1.5.1'
37
37
  end
@@ -1,4 +1,4 @@
1
- <%= @slack_name.present? ? "Hi <@#{@slack_name}>," : "<!channel>," %>
1
+ <%= @target_username.present? ? "Hi <@#{@target_username}>," : "<!channel>," %>
2
2
 
3
3
  <%= @notification.notifier.present? ? @notification.notifier.printable_notifier_name : 'Someone' %> notified you of <%= @notification.notifiable.printable_notifiable_name(@notification.target) %><%= " in #{@notification.group.printable_group_name}" if @notification.group.present? %>.
4
4
 
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: ../
3
3
  specs:
4
- activity_notification (1.2.0)
4
+ activity_notification (1.2.1)
5
5
  activerecord (>= 4.2.0)
6
6
  i18n (>= 0.5.0)
7
7
  jquery-rails (>= 3.1.1)
@@ -49,18 +49,18 @@ GEM
49
49
  activesupport (>= 3.0)
50
50
  railties (>= 3.0)
51
51
  rspec-rails (>= 2.2)
52
- arel (6.0.3)
53
- aws-sdk (2.6.43)
54
- aws-sdk-resources (= 2.6.43)
55
- aws-sdk-core (2.6.43)
52
+ arel (6.0.4)
53
+ aws-sdk (2.6.44)
54
+ aws-sdk-resources (= 2.6.44)
55
+ aws-sdk-core (2.6.44)
56
56
  aws-sigv4 (~> 1.0)
57
57
  jmespath (~> 1.0)
58
- aws-sdk-resources (2.6.43)
59
- aws-sdk-core (= 2.6.43)
58
+ aws-sdk-resources (2.6.44)
59
+ aws-sdk-core (= 2.6.44)
60
60
  aws-sigv4 (1.0.0)
61
61
  bcrypt (3.1.11)
62
62
  builder (3.2.2)
63
- concurrent-ruby (1.0.3)
63
+ concurrent-ruby (1.0.4)
64
64
  coveralls (0.8.17)
65
65
  json (>= 1.8, < 3)
66
66
  simplecov (~> 0.12.0)
@@ -99,7 +99,7 @@ GEM
99
99
  mime-types-data (3.2016.0521)
100
100
  mini_portile2 (2.1.0)
101
101
  minitest (5.10.1)
102
- nokogiri (1.6.8.1)
102
+ nokogiri (1.7.0.1)
103
103
  mini_portile2 (~> 2.1.0)
104
104
  orm_adapter (0.5.0)
105
105
  rack (1.6.5)
@@ -118,9 +118,9 @@ GEM
118
118
  sprockets-rails
119
119
  rails-deprecated_sanitizer (1.0.3)
120
120
  activesupport (>= 4.2.0.alpha)
121
- rails-dom-testing (1.0.7)
121
+ rails-dom-testing (1.0.8)
122
122
  activesupport (>= 4.2.0.beta, < 5.0)
123
- nokogiri (~> 1.6.0)
123
+ nokogiri (~> 1.6)
124
124
  rails-deprecated_sanitizer (>= 1.0.1)
125
125
  rails-html-sanitizer (1.0.3)
126
126
  loofah (~> 2.0)
@@ -154,7 +154,7 @@ GEM
154
154
  json (>= 1.8, < 3)
155
155
  simplecov-html (~> 0.10.0)
156
156
  simplecov-html (0.10.0)
157
- slack-notifier (1.5.1)
157
+ slack-notifier (2.0.0)
158
158
  sprockets (3.7.1)
159
159
  concurrent-ruby (~> 1.0)
160
160
  rack (> 1, < 3)
@@ -162,7 +162,7 @@ GEM
162
162
  actionpack (>= 4.0)
163
163
  activesupport (>= 4.0)
164
164
  sprockets (>= 3.0.0)
165
- sqlite3 (1.3.12)
165
+ sqlite3 (1.3.13)
166
166
  term-ansicolor (1.4.0)
167
167
  tins (~> 1.0)
168
168
  thor (0.19.4)
@@ -190,8 +190,8 @@ DEPENDENCIES
190
190
  rails (~> 4.2.0)
191
191
  rspec-rails (~> 3.5.1)
192
192
  simplecov (~> 0.12.0)
193
- slack-notifier (~> 1.5.1)
194
- sqlite3 (~> 1.3.12)
193
+ slack-notifier (>= 1.5.1)
194
+ sqlite3 (~> 1.3.13)
195
195
  timecop
196
196
  yard (~> 0.9.5)
197
197
  yard-activesupport-concern (~> 0.0.1)
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: ../
3
3
  specs:
4
- activity_notification (1.2.0)
4
+ activity_notification (1.2.1)
5
5
  activerecord (>= 4.2.0)
6
6
  i18n (>= 0.5.0)
7
7
  jquery-rails (>= 3.1.1)
@@ -52,17 +52,17 @@ GEM
52
52
  railties (>= 3.0)
53
53
  rspec-rails (>= 2.2)
54
54
  arel (7.1.4)
55
- aws-sdk (2.6.43)
56
- aws-sdk-resources (= 2.6.43)
57
- aws-sdk-core (2.6.43)
55
+ aws-sdk (2.6.44)
56
+ aws-sdk-resources (= 2.6.44)
57
+ aws-sdk-core (2.6.44)
58
58
  aws-sigv4 (~> 1.0)
59
59
  jmespath (~> 1.0)
60
- aws-sdk-resources (2.6.43)
61
- aws-sdk-core (= 2.6.43)
60
+ aws-sdk-resources (2.6.44)
61
+ aws-sdk-core (= 2.6.44)
62
62
  aws-sigv4 (1.0.0)
63
63
  bcrypt (3.1.11)
64
64
  builder (3.2.2)
65
- concurrent-ruby (1.0.3)
65
+ concurrent-ruby (1.0.4)
66
66
  coveralls (0.8.17)
67
67
  json (>= 1.8, < 3)
68
68
  simplecov (~> 0.12.0)
@@ -103,7 +103,7 @@ GEM
103
103
  mini_portile2 (2.1.0)
104
104
  minitest (5.10.1)
105
105
  nio4r (1.2.1)
106
- nokogiri (1.6.8.1)
106
+ nokogiri (1.7.0.1)
107
107
  mini_portile2 (~> 2.1.0)
108
108
  orm_adapter (0.5.0)
109
109
  rack (2.0.1)
@@ -125,9 +125,9 @@ GEM
125
125
  actionpack (~> 5.x)
126
126
  actionview (~> 5.x)
127
127
  activesupport (~> 5.x)
128
- rails-dom-testing (2.0.1)
128
+ rails-dom-testing (2.0.2)
129
129
  activesupport (>= 4.2.0, < 6.0)
130
- nokogiri (~> 1.6.0)
130
+ nokogiri (~> 1.6)
131
131
  rails-html-sanitizer (1.0.3)
132
132
  loofah (~> 2.0)
133
133
  railties (5.0.1)
@@ -161,7 +161,7 @@ GEM
161
161
  json (>= 1.8, < 3)
162
162
  simplecov-html (~> 0.10.0)
163
163
  simplecov-html (0.10.0)
164
- slack-notifier (1.5.1)
164
+ slack-notifier (2.0.0)
165
165
  sprockets (3.7.1)
166
166
  concurrent-ruby (~> 1.0)
167
167
  rack (> 1, < 3)
@@ -169,7 +169,7 @@ GEM
169
169
  actionpack (>= 4.0)
170
170
  activesupport (>= 4.0)
171
171
  sprockets (>= 3.0.0)
172
- sqlite3 (1.3.12)
172
+ sqlite3 (1.3.13)
173
173
  term-ansicolor (1.4.0)
174
174
  tins (~> 1.0)
175
175
  thor (0.19.4)
@@ -201,8 +201,8 @@ DEPENDENCIES
201
201
  rails-controller-testing
202
202
  rspec-rails (~> 3.5.1)
203
203
  simplecov (~> 0.12.0)
204
- slack-notifier (~> 1.5.1)
205
- sqlite3 (~> 1.3.12)
204
+ slack-notifier (>= 1.5.1)
205
+ sqlite3 (~> 1.3.13)
206
206
  timecop
207
207
  yard (~> 0.9.5)
208
208
  yard-activesupport-concern (~> 0.0.1)
@@ -6,27 +6,27 @@ module ActivityNotification
6
6
 
7
7
  # Initialize method to prepare Slack::Notifier
8
8
  # @param [Hash] options Options for initializing
9
- # @option options [String, Proc, Symbol] :slack_name (nil) Target user name of Slack, it resolved by target instance like email_allowed?
10
- # @option options [required, String] :webhook_url (nil) Webhook URL of Slack Incoming WebHooks integration
11
- # @option options [Hash] others Other options to be set Slack::Notifier.new, like :channel, :username, :icon_emoji etc
9
+ # @option options [String, Proc, Symbol] :target_username (nil) Target user name of Slack, it resolved by target instance like email_allowed?
10
+ # @option options [required, String] :webhook_url (nil) Webhook URL of Slack Incoming WebHooks integration
11
+ # @option options [Hash] others Other options to be set Slack::Notifier.new, like :channel, :username, :icon_emoji etc
12
12
  def initialize_target(options = {})
13
- @slack_name = options.delete(:slack_name)
13
+ @target_username = options.delete(:target_username)
14
14
  @notifier = ::Slack::Notifier.new(options.delete(:webhook_url), options)
15
15
  end
16
16
 
17
17
  # Publishes notification message to Slack
18
18
  # @param [Notification] notification Notification instance
19
19
  # @param [Hash] options Options for publishing
20
- # @option options [String, Proc, Symbol] :slack_name (nil) Target user name of Slack, it resolved by target instance like email_allowed?
21
- # @option options [String] :partial_root ("activity_notification/optional_targets/#{target}/#{optional_target_name}", "activity_notification/optional_targets/#{target}/base", "activity_notification/optional_targets/default/#{optional_target_name}", "activity_notification/optional_targets/default/base") Partial template name
22
- # @option options [String] :partial (self.key.tr('.', '/')) Root path of partial template
23
- # @option options [String] :layout (nil) Layout template name
24
- # @option options [String] :layout_root ('layouts') Root path of layout template
25
- # @option options [String, Symbol] :fallback (:default) Fallback template to use when MissingTemplate is raised. Set :text to use i18n text as fallback.
26
- # @option options [Hash] others Parameters to be set as locals
20
+ # @option options [String, Proc, Symbol] :target_username (nil) Target user name of Slack, it resolved by target instance like email_allowed?
21
+ # @option options [String] :partial_root ("activity_notification/optional_targets/#{target}/#{optional_target_name}", "activity_notification/optional_targets/#{target}/base", "activity_notification/optional_targets/default/#{optional_target_name}", "activity_notification/optional_targets/default/base") Partial template name
22
+ # @option options [String] :partial (self.key.tr('.', '/')) Root path of partial template
23
+ # @option options [String] :layout (nil) Layout template name
24
+ # @option options [String] :layout_root ('layouts') Root path of layout template
25
+ # @option options [String, Symbol] :fallback (:default) Fallback template to use when MissingTemplate is raised. Set :text to use i18n text as fallback.
26
+ # @option options [Hash] others Parameters to be set as locals
27
27
  def notify(notification, options = {})
28
- slack_name = notification.target.resolve_value(options.delete(:slack_name) || @slack_name)
29
- @notifier.ping(render_notification_message(notification, options.merge(assignment: { slack_name: slack_name })))
28
+ target_username = notification.target.resolve_value(options.delete(:target_username) || @target_username)
29
+ @notifier.ping(render_notification_message(notification, options.merge(assignment: { target_username: target_username })))
30
30
  end
31
31
  end
32
32
  end
@@ -1,3 +1,3 @@
1
1
  module ActivityNotification
2
- VERSION = "1.2.0"
2
+ VERSION = "1.2.1"
3
3
  end
@@ -12,21 +12,34 @@ class Comment < ActiveRecord::Base
12
12
  printable_name: ->(comment) { "comment \"#{comment.body}\"" },
13
13
  dependent_notifications: :update_group_and_delete_all
14
14
 
15
- # require 'activity_notification/optional_targets/amazon_sns'
16
- # require 'activity_notification/optional_targets/slack'
17
15
  require 'custom_optional_targets/console_output'
16
+ optional_targets = { CustomOptionalTarget::ConsoleOutput => {} }
17
+ if ENV['OPTIONAL_TARGET_AMAZON_SNS']
18
+ require 'activity_notification/optional_targets/amazon_sns'
19
+ if ENV['OPTIONAL_TARGET_AMAZON_SNS_TOPIC_ARN']
20
+ optional_targets = optional_targets.merge(
21
+ ActivityNotification::OptionalTarget::AmazonSNS => { topic_arn: ENV['OPTIONAL_TARGET_AMAZON_SNS_TOPIC_ARN'] }
22
+ )
23
+ elsif ENV['OPTIONAL_TARGET_AMAZON_SNS_PHONE_NUMBER']
24
+ optional_targets = optional_targets.merge(
25
+ ActivityNotification::OptionalTarget::AmazonSNS => { phone_number: :phone_number }
26
+ )
27
+ end
28
+ end
29
+ if ENV['OPTIONAL_TARGET_SLACK']
30
+ require 'activity_notification/optional_targets/slack'
31
+ optional_targets = optional_targets.merge(
32
+ ActivityNotification::OptionalTarget::Slack => {
33
+ webhook_url: ENV['OPTIONAL_TARGET_SLACK_WEBHOOK_URL'], target_username: :slack_username,
34
+ channel: ENV['OPTIONAL_TARGET_SLACK_CHANNEL'] || 'activity_notification',
35
+ username: 'ActivityNotification', icon_emoji: ":ghost:"
36
+ }
37
+ )
38
+ end
18
39
  acts_as_notifiable :admins, targets: Admin.all,
19
40
  group: :article, notifier: :user, notifiable_path: :article_notifiable_path,
20
41
  printable_name: ->(comment) { "comment \"#{comment.body}\"" }, dependent_notifications: :delete_all,
21
- optional_targets: {
22
- # ActivityNotification::OptionalTarget::AmazonSNS => { topic_arn: 'arn:aws:sns:XXXXX:XXXXXXXXXXXX:XXXXX' },
23
- # # ActivityNotification::OptionalTarget::AmazonSNS => { phone_number: :phone_number },
24
- # ActivityNotification::OptionalTarget::Slack => {
25
- # webhook_url: 'https://hooks.slack.com/services/XXXXXXXXX/XXXXXXXXX/XXXXXXXXXXXXXXXXXXXXXXXX',
26
- # slack_name: :slack_name, channel: 'activity_notification', username: 'ActivityNotification', icon_emoji: ":ghost:"
27
- # },
28
- CustomOptionalTarget::ConsoleOutput => {}
29
- }
42
+ optional_targets: optional_targets
30
43
 
31
44
  def article_notifiable_path
32
45
  article_path(article)
@@ -5,4 +5,6 @@ Dear <%= @target.printable_target_name %>
5
5
  <%= @notification.notifier.present? ? @notification.notifier.printable_notifier_name : 'Someone' %> notified you of <%= @notification.notifiable.printable_notifiable_name(@notification.target) %><%= " in #{@notification.group.printable_group_name}" if @notification.group.present? %>.
6
6
 
7
7
  <%= "Move to notified #{@notification.notifiable.printable_type.downcase}:" %>
8
- <%= move_notification_url_for(@notification, open: true) %>
8
+ <%= move_notification_url_for(@notification, open: true) %>
9
+
10
+ Thank you!
@@ -18,7 +18,7 @@ class CreateTestTables < ActiveRecord::Migration
18
18
  create_table :admins do |t|
19
19
  t.references :user, index: true
20
20
  t.string :phone_number
21
- t.string :slack_name
21
+ t.string :slack_username
22
22
 
23
23
  t.timestamps
24
24
  end
@@ -15,7 +15,7 @@ ActiveRecord::Schema.define(version: 20160715050433) do
15
15
  create_table "admins", force: :cascade do |t|
16
16
  t.integer "user_id"
17
17
  t.string "phone_number"
18
- t.string "slack_name"
18
+ t.string "slack_username"
19
19
  t.datetime "created_at"
20
20
  t.datetime "updated_at"
21
21
  t.index ["user_id"], name: "index_admins_on_user_id"
@@ -2,6 +2,7 @@
2
2
  # This file is seed file for test data on development environment.
3
3
 
4
4
  ActivityNotification::Notification.delete_all
5
+ ActivityNotification::Subscription.delete_all
5
6
  Comment.delete_all
6
7
  Article.delete_all
7
8
  Admin.delete_all
@@ -21,7 +22,11 @@ end
21
22
 
22
23
  ['Ichiro'].each do |name|
23
24
  user = User.find_by_name(name)
24
- Admin.create(user: user, slack_name: name.downcase)
25
+ Admin.create(
26
+ user: user,
27
+ phone_number: ENV['OPTIONAL_TARGET_AMAZON_SNS_PHONE_NUMBER'],
28
+ slack_username: ENV['OPTIONAL_TARGET_SLACK_USERNAME']
29
+ )
25
30
  end
26
31
 
27
32
  User.all.each do |user|
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: activity_notification
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.0
4
+ version: 1.2.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Shota Yamazaki
@@ -78,14 +78,14 @@ dependencies:
78
78
  requirements:
79
79
  - - "~>"
80
80
  - !ruby/object:Gem::Version
81
- version: 1.3.12
81
+ version: 1.3.13
82
82
  type: :development
83
83
  prerelease: false
84
84
  version_requirements: !ruby/object:Gem::Requirement
85
85
  requirements:
86
86
  - - "~>"
87
87
  - !ruby/object:Gem::Version
88
- version: 1.3.12
88
+ version: 1.3.13
89
89
  - !ruby/object:Gem::Dependency
90
90
  name: rspec-rails
91
91
  requirement: !ruby/object:Gem::Requirement
@@ -188,14 +188,14 @@ dependencies:
188
188
  name: slack-notifier
189
189
  requirement: !ruby/object:Gem::Requirement
190
190
  requirements:
191
- - - "~>"
191
+ - - ">="
192
192
  - !ruby/object:Gem::Version
193
193
  version: 1.5.1
194
194
  type: :development
195
195
  prerelease: false
196
196
  version_requirements: !ruby/object:Gem::Requirement
197
197
  requirements:
198
- - - "~>"
198
+ - - ">="
199
199
  - !ruby/object:Gem::Version
200
200
  version: 1.5.1
201
201
  description: Integrated user activity notifications for Ruby on Rails. Provides functions