Commit 93241288077e60539f6ae21b174d7ec287b4e45d
1 parent
ae91fcb5
Exists in
master
More compact slack notifications
Showing
3 changed files
with
42 additions
and
52 deletions
Show diff stats
app/models/notification_services/slack_service.rb
| @@ -19,41 +19,35 @@ class NotificationServices::SlackService < NotificationService | @@ -19,41 +19,35 @@ class NotificationServices::SlackService < NotificationService | ||
| 19 | 19 | ||
| 20 | def post_payload(problem) | 20 | def post_payload(problem) |
| 21 | { | 21 | { |
| 22 | + username: "Errbit", | ||
| 23 | + icon_emoji: ":collision:", | ||
| 22 | attachments: [ | 24 | attachments: [ |
| 23 | { | 25 | { |
| 24 | - fallback: message_for_slack(problem), | ||
| 25 | - pretext: "<#{problem.url}|Errbit - #{problem.app.name}: #{problem.error_class}>", | ||
| 26 | - color: "#D00000", | ||
| 27 | - fields: [ | 26 | + fallback: message_for_slack(problem), |
| 27 | + title: problem.message.to_s.truncate(100), | ||
| 28 | + title_link: problem.url, | ||
| 29 | + text: problem.where, | ||
| 30 | + color: "#D00000", | ||
| 31 | + fields: [ | ||
| 28 | { | 32 | { |
| 29 | - title: "Environment", | ||
| 30 | - value: problem.environment, | ||
| 31 | - short: false | 33 | + title: "Application", |
| 34 | + value: problem.app.name, | ||
| 35 | + short: true | ||
| 32 | }, | 36 | }, |
| 33 | { | 37 | { |
| 34 | - title: "Location", | ||
| 35 | - value: problem.where, | ||
| 36 | - short: false | 38 | + title: "Environment", |
| 39 | + value: problem.environment, | ||
| 40 | + short: true | ||
| 37 | }, | 41 | }, |
| 38 | { | 42 | { |
| 39 | - title: "Message", | ||
| 40 | - value: problem.message.to_s, | ||
| 41 | - short: false | 43 | + title: "Times Occurred", |
| 44 | + value: problem.notices_count, | ||
| 45 | + short: true | ||
| 42 | }, | 46 | }, |
| 43 | { | 47 | { |
| 44 | title: "First Noticed", | 48 | title: "First Noticed", |
| 45 | - value: problem.first_notice_at, | ||
| 46 | - short: false | ||
| 47 | - }, | ||
| 48 | - { | ||
| 49 | - title: "Last Noticed", | ||
| 50 | - value: problem.last_notice_at, | ||
| 51 | - short: false | ||
| 52 | - }, | ||
| 53 | - { | ||
| 54 | - title: "Times Occurred", | ||
| 55 | - value: problem.notices_count, | ||
| 56 | - short: false | 49 | + value: problem.first_notice_at.try(:to_s, :db), |
| 50 | + short: true | ||
| 57 | } | 51 | } |
| 58 | ] | 52 | ] |
| 59 | } | 53 | } |
spec/fabricators/notice_fabricator.rb
| @@ -2,7 +2,7 @@ Fabricator :notice do | @@ -2,7 +2,7 @@ Fabricator :notice do | ||
| 2 | app | 2 | app |
| 3 | err | 3 | err |
| 4 | error_class 'FooError' | 4 | error_class 'FooError' |
| 5 | - message 'Too Much Bar' | 5 | + message 'FooError: Too Much Bar' |
| 6 | backtrace | 6 | backtrace |
| 7 | server_environment { { 'environment-name' => 'production' } } | 7 | server_environment { { 'environment-name' => 'production' } } |
| 8 | request { { 'component' => 'foo', 'action' => 'bar' } } | 8 | request { { 'component' => 'foo', 'action' => 'bar' } } |
spec/models/notification_service/slack_service_spec.rb
| @@ -2,46 +2,42 @@ describe NotificationServices::SlackService, type: 'model' do | @@ -2,46 +2,42 @@ describe NotificationServices::SlackService, type: 'model' do | ||
| 2 | it "it should send a notification to Slack with hook url" do | 2 | it "it should send a notification to Slack with hook url" do |
| 3 | # setup | 3 | # setup |
| 4 | notice = Fabricate :notice | 4 | notice = Fabricate :notice |
| 5 | - notification_service = Fabricate :slack_notification_service, app: notice.app, service_url: "https://hooks.slack.com/services/XXXXXXXXX/XXXXXXXXX/XXXXXXXXX" | 5 | + notification_service = Fabricate :slack_notification_service, |
| 6 | + app: notice.app, | ||
| 7 | + service_url: "https://hooks.slack.com/services/XXXXXXXXX/XXXXXXXXX/XXXXXXXXX" | ||
| 6 | problem = notice.problem | 8 | problem = notice.problem |
| 7 | 9 | ||
| 8 | # faraday stubbing | 10 | # faraday stubbing |
| 9 | payload = { | 11 | payload = { |
| 12 | + username: "Errbit", | ||
| 13 | + icon_emoji: ":collision:", | ||
| 10 | attachments: [ | 14 | attachments: [ |
| 11 | { | 15 | { |
| 12 | - fallback: notification_service.message_for_slack(problem), | ||
| 13 | - pretext: "<#{problem.url}|Errbit - #{problem.app.name}: #{problem.error_class}>", | ||
| 14 | - color: "#D00000", | ||
| 15 | - fields: [ | 16 | + fallback: notification_service.message_for_slack(problem), |
| 17 | + title: problem.message.to_s.truncate(100), | ||
| 18 | + title_link: problem.url, | ||
| 19 | + text: problem.where, | ||
| 20 | + color: "#D00000", | ||
| 21 | + fields: [ | ||
| 16 | { | 22 | { |
| 17 | - title: "Environment", | ||
| 18 | - value: problem.environment, | ||
| 19 | - short: false | 23 | + title: "Application", |
| 24 | + value: problem.app.name, | ||
| 25 | + short: true | ||
| 20 | }, | 26 | }, |
| 21 | { | 27 | { |
| 22 | - title: "Location", | ||
| 23 | - value: problem.where, | ||
| 24 | - short: false | 28 | + title: "Environment", |
| 29 | + value: problem.environment, | ||
| 30 | + short: true | ||
| 25 | }, | 31 | }, |
| 26 | { | 32 | { |
| 27 | - title: "Message", | ||
| 28 | - value: problem.message.to_s, | ||
| 29 | - short: false | 33 | + title: "Times Occurred", |
| 34 | + value: problem.notices_count, | ||
| 35 | + short: true | ||
| 30 | }, | 36 | }, |
| 31 | { | 37 | { |
| 32 | title: "First Noticed", | 38 | title: "First Noticed", |
| 33 | - value: problem.first_notice_at, | ||
| 34 | - short: false | ||
| 35 | - }, | ||
| 36 | - { | ||
| 37 | - title: "Last Noticed", | ||
| 38 | - value: problem.last_notice_at, | ||
| 39 | - short: false | ||
| 40 | - }, | ||
| 41 | - { | ||
| 42 | - title: "Times Occurred", | ||
| 43 | - value: problem.notices_count, | ||
| 44 | - short: false | 39 | + value: problem.first_notice_at.try(:to_s, :db), |
| 40 | + short: true | ||
| 45 | } | 41 | } |
| 46 | ] | 42 | ] |
| 47 | } | 43 | } |