Project

slackiq

0.12
No commit activity in last 3 years
No release in over 3 years
Slackiq (by MightySignal) integrates Slack and Sidekiq so that you can have vital information about your Sidekiq jobs sent directly to your team's Slack.
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
 Dependencies

Development

~> 1.10
~> 10.0

Runtime

 Project Readme

Slackiq

Gem Version

Slackiq (pronounced slack-kick) integrates Slack and Sidekiq so that you can have vital information about your Sidekiq jobs sent directly to your team's Slack.

demo

Installation

Add this line to your Gemfile:

gem 'slackiq'

Then run:

bundle install

Configuration

First, set up any number of Slack Incoming Webhooks from your Slack.

Then, you only need to call the configure method when your application launches to configure all of the webhooks to which you want to post. If you're using Rails, create an initializer at config/initializers/slackiq.rb. Here's an example:

Slackiq.configure( web_scrapes: 'https://hooks.slack.com/services/HA298HF2/ALSKF2451/lknsaHHA2323KKDKND', 
                   data_processing: 'https://hooks.slack.com/services/HA298HF2/ALSKF2451/H24dLKAHD22423')

:web_scrapes and data_processing are examples of keys. Use whatever keys you want.

Usage

You can call notify to send a nicely-formatted notification to your Slack. You can call notify

  • Inside the Sidekiq Pro on_success or on_complete callback (not available on regular Sidekiq--only Pro)
  • From inside a Sidekiq worker while it's running, in which case you should pass in the bid to the perform method of the worker

The notify method has a single Hash parameter. Here are the keys and values in the Hash:

  • :webhook_name The name of the webhook (Symbol) that you configured (eg. :web_scrapes or :data_processing)
  • :title The title of the notification (String)
  • :status An instance of Sidekiq::Batch::Status
  • Any other keys and values (both Strings) can be added too, and they'll be added to the Slack notification!

If you haven't used batches with Sidekiq Pro before, read this first.

Here's an example showing how you would use Slackiq to send a notification to your Slack when your Sidekiq batch completes:

class WebScraper
  
  class << self
  
    # Scrape the first 100 URLs in the database
    def scrape_100
      batch = Sidekiq::Batch.new
      batch.description = 'Scrape the first 100 URLs!' 
      batch.on(:complete, self)
      
      batch.jobs do
        
      urls = Url.limit(100) # Url is a Rails model in this case
      
      urls.each do |url|
        ScraperWorker.perform_async(url.id)
      end
    end
  
  end
  
  def on_complete(status, options)
    Slackiq.notify(webhook_name: :web_scrapes, status: status, title: 'Scrape Completed!', 
    'Total URLs in DB' => URL.count.to_s, 
    'Servers' => "#{Server.active_count} active, #{Server.inactive_count} inactive")
  end
  
end

Note that in this case, 'Total URLs in DB' and 'Servers' are custom fields that will also appear in Slack!

Want to send a message to Slack that isn't Sidekiq-related?

No prob. Just:

Slackiq.message('Server 5 is overloaded!', webhook_name: :data_processing)

Contributing

Bug reports and pull requests are welcome on GitHub at https://github.com/MightySignal/slackiq. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the Contributor Covenant code of conduct.

License

The gem is available as open source under the terms of the MIT License.

Blog Post about Slackiq

https://blog.mightysignal.com/slackiq-a-ruby-gem-that-connects-slack-and-sidekiq-a2308c1974b7

More Open Source Projects