sidekiq gem and implementation
first Add gem this gem
gem 'sidekiq'
gem 'sidekiq-status'
gem 'sidekiq-cron'
than create in the worker file like subscription_worker.rb
require 'sidekiq-status'
class SubscriptionWorker
include Sidekiq::Worker
include Sidekiq::Status::Worker
def perform
puts "hi-------"
# Subscription.all.each do |subscription|
# if subscription.present? && subscription.expire_date.between?(Date.today, Date.today + 1.week)
# send_push_notification(subscription.user_id, "your subscription will expired on #{subscription.expire_date}", "subscription reach end date notification")
# end
# end
end
def send_push_notification(user_id, message, title)
user = User.find(user_id)
PushNotification.notification(
user, message, title
)
end
end
than change the code in config/initializers/sidekiq.rb
require 'sidekiq'
require 'sidekiq-status'
Sidekiq.configure_client do |config|
# accepts :expiration (optional)
Sidekiq::Status.configure_client_middleware config, expiration: 30.minutes
end
Sidekiq.configure_server do |config|
# accepts :expiration (optional)
Sidekiq::Status.configure_server_middleware config, expiration: 30.minutes
# accepts :expiration (optional)
Sidekiq::Status.configure_client_middleware config, expiration: 30.minutes
end
than add the require code in routes
Rails.application.routes.draw do
require 'sidekiq/web'
require 'sidekiq/cron/web'
mount Sidekiq::Web => '/sidekiq'
than create in the config folder config/schedule.yml and write like this code
subscription_expire_alert_job:
cron: "0 * * * * *"
class: "SubscriptionWorker"
queue: default
Comments
Post a Comment