module SidekiqAdhocScheduler::Web
Constants
- VIEW_PATH
Public Class Methods
registered(app)
click to toggle source
# File lib/sidekiq_adhoc_scheduler/web.rb, line 5 def self.registered(app) app.get '/schedulers' do @schedulers = Sidekiq.get_all_schedules erb File.read(File.join(VIEW_PATH, 'scheduler.html.erb')) end app.get '/scheduler/:id' do @scheduler = Sidekiq.get_schedule(params[:id]) erb File.read(File.join(VIEW_PATH, 'scheduler_edit.html.erb')) end app.put '/scheduler/:id' do job_name = params[:id] unless job_name.to_s.strip.empty? @scheduler = Sidekiq.get_schedule(params[:id]) data = { class: params[:scheduler]['class'], queue: params[:scheduler]['queue'], description: params[:scheduler]['description'], args: params[:scheduler]['args'] } unless params[:scheduler]['args'].to_s.strip.empty? args = params[:scheduler]['args'].to_s.strip if args.include?('[') begin data[:args] = JSON.parse(args) rescue JSON::ParserError => e redirect "#{root_path}scheduler/#{params[:id]}" end else data[:args] = args end end if !params[:scheduler]['cron'].to_s.strip.empty? data[:cron] = params[:scheduler]['cron'] elsif !params[:scheduler]['every'].to_s.strip.empty? every = params[:scheduler]['every'].to_s.strip if every.include?('[') begin data[:every] = JSON.parse(every) rescue JSON::ParserError => e redirect "#{root_path}scheduler/#{params[:id]}" end else data[:every] = every end end Sidekiq.set_schedule(job_name, data) end redirect "#{root_path}schedulers" end app.get '/schedulers/new' do erb File.read(File.join(VIEW_PATH, 'scheduler_new.html.erb')) end app.post '/schedulers' do job_name = params[:scheduler]['name'] unless job_name.to_s.strip.empty? data = { class: params[:scheduler]['class'], queue: params[:scheduler]['queue'], description: params[:scheduler]['description'], args: params[:scheduler]['args'] } unless params[:scheduler]['args'].to_s.strip.empty? args = params[:scheduler]['args'].to_s.strip if args.include?('[') begin data[:args] = JSON.parse(args) rescue JSON::ParserError => e redirect "#{root_path}scheduler/new" end else data[:args] = args end end if !params[:scheduler]['cron'].to_s.strip.empty? data[:cron] = params[:scheduler]['cron'] elsif !params[:scheduler]['every'].to_s.strip.empty? every = params[:scheduler]['every'].to_s.strip if every.include?('[') begin data[:every] = JSON.parse(every) rescue JSON::ParserError => e redirect "#{root_path}schedulers/new" end else data[:every] = every end end Sidekiq.set_schedule(job_name, data) end redirect "#{root_path}schedulers" end app.delete '/scheduler/:id' do schedules = Sidekiq.get_all_schedules.reject { |k, _v| k == params[:id] } Sidekiq.schedule = schedules redirect "#{root_path}schedulers" end app.get '/scheduler/:id/reject' do Sidekiq.remove_schedule(params[:id]) redirect "#{root_path}schedulers" end app.get '/scheduler/:id/enqueue' do schedule = Sidekiq.get_schedule(params[:id]) Sidekiq::Scheduler.enqueue_job(schedule) redirect "#{root_path}schedulers" end end