Setup slack notifications in Rails

Table of Contents Hide
  1. Setup Slack:
  2. Setup Rails:

Slack là một phần mềm Worksplace sử dụng thông dụng rộng rãi. Tuy nhiên, ta có thể sử dụng slack để theo dõi và giám sát hệ thống, gửi tin nhắn tự động.

Sau đây, mình sẽ hướng dẫn mọi người cách để gửi thông báo, tin nhắn … đến slack trong rails app, nó làm cho Rails Application của bạn có thể trở nên năng động và hiệu quả hơn.

Setup Slack:

Đầu tiên, bạn phải có 1 Worksplace, 1 channel nào đó rồi nhé.

  • Bạn cần tạo một App Slack từ https://api.slack.com/apps, chọn Create an app → From Scratch (điền tên và chọn workspace)
  • Chọn tab Incoming Webhooks bạn sẽ có:
    • Webhook URL
    • Channel

Setup Rails:

Đầu tiên, bạn tự thêm gem vào trong GemfileBundle nhé.

1. Sử dụng slack-notifier
  • gem "slack-notifier" https://github.com/slack-notifier/slack-notifier
  • Tạo 1 module SlackNotifier để tiện cho việc gọi khi cần.
    • ENV[‘SLACK_WEBHOOK_URL’], ENV[‘SLACK_CHANNEL_SLACK’] bạn lấy ở bên trên.
    • ENV[‘SLACK_USERNAME_SLACK’] bạn đặt tự do.
Ruby
#config/initializers create slack_notifier.rb

module SlackNotifier
  CLIENT = Slack::Notifier.new(
    ENV['SLACK_WEBHOOK_URL'],
    channel: ENV['SLACK_CHANNEL_SLACK'],
    username: ENV['SLACK_USERNAME_SLACK']
  )
end

SlackNotifier::CLIENT.ping "Hello Everybody!"
SlackNotifier::CLIENT.ping "TEST SLACK NOTIFICATION"
  • Kết quả
2. Sử dụng exception-notification
  • Gem này sẽ tự động gửi exception về slack của bạn khi Rails App xảy exception. Nó giúp việc giám sát hệ thống, giúp bạn nhanh chóng kiểm tra, sửa chữa kịp thời.
  • gem exception_notification https://github.com/smartinez87/exception_notification
  • Nếu ở production: config/environments/production.rb
Ruby
#config/environments/development.rb

Rails.application.config.middleware.use ExceptionNotification::Rack, slack: {
  webhook_url: ENV['SLACK_WEBHOOK_URL'],
  channel: ENV['SLACK_CHANNEL_NAME']
	}

  • Đặt ở nơi bạn muốn push notify nhé.
Ruby
rescue_from StandardError do |e|
  ExceptionNotifier.notify_exception(e, 
		data: {
			# custom message ... 
			messages: e.messages
			date: Date.current
		}
	)
end
  • Kết quả

Hi vọng bài viết sẽ giúp ích được mọi người.

Cảm ơn mọi người.

0 Shares:
1 comment
  1. Bài viết của bạn bị bug chỗ này nè :v

    #config/environments/development.rb

    Rails.application.config.middleware.use ExceptionNotification::Rack, slack: {
    webhook_url: ENV[‘SLACK_WEBHOOK_URL’],
    channel: ENV[‘SLACK_CHANNEL_NAME’]
    }
    }

Leave a Reply

Your email address will not be published. Required fields are marked *

You May Also Like
Read More

Nâng bao nhiêu pool connect database là phù hợp

Trong bài viết này chúng ta sẽ tìm hiểu về sự quan trọng của việc tối ưu hóa kết nối database và tìm cách đảm bảo rằng bạn đang sử dụng số lượng pool kết nối đúng đắn, tiết kiệm tài nguyên và đảm bảo hiệu suất hệ thống.