79 lines
2.2 KiB
Ruby
79 lines
2.2 KiB
Ruby
|
# app/admin/sidekiq_jobs.rb
|
||
|
ActiveAdmin.register_page "Sidekiq Jobs" do
|
||
|
menu priority: 1, label: "Sidekiq 任务管理"
|
||
|
|
||
|
content title: "Sidekiq 任务管理" do
|
||
|
columns do
|
||
|
column do
|
||
|
panel "任务统计" do
|
||
|
stats = Sidekiq::Stats.new
|
||
|
table_for [ "统计数据" ] do
|
||
|
column "处理的任务总数" do
|
||
|
stats.processed
|
||
|
end
|
||
|
column "失败的任务总数" do
|
||
|
stats.failed
|
||
|
end
|
||
|
column "等待中的任务数" do
|
||
|
stats.enqueued
|
||
|
end
|
||
|
end
|
||
|
end
|
||
|
end
|
||
|
end
|
||
|
|
||
|
columns do
|
||
|
column do
|
||
|
panel "计划任务列表" do
|
||
|
table_for Sidekiq::ScheduledSet.new.to_a do
|
||
|
column "任务名称" do |job|
|
||
|
job.item["class"]
|
||
|
end
|
||
|
column "执行时间" do |job|
|
||
|
Time.at(job.at)
|
||
|
end
|
||
|
column "参数" do |job|
|
||
|
job.item["args"].to_s
|
||
|
end
|
||
|
column "操作" do |job|
|
||
|
links = []
|
||
|
links << link_to("立即执行", execute_admin_sidekiq_jobs_path(jid: job.jid), method: :post)
|
||
|
links << link_to("删除", delete_admin_sidekiq_jobs_path(jid: job.jid), method: :delete)
|
||
|
links.join(" | ").html_safe
|
||
|
end
|
||
|
end
|
||
|
end
|
||
|
end
|
||
|
end
|
||
|
end
|
||
|
|
||
|
action_item :refresh do
|
||
|
link_to "刷新", admin_sidekiq_jobs_path
|
||
|
end
|
||
|
|
||
|
# 将 collection_action 改为 page_action
|
||
|
page_action :execute, method: :post do
|
||
|
jid = params[:jid]
|
||
|
job = Sidekiq::ScheduledSet.new.find_job(jid)
|
||
|
if job
|
||
|
job.delete
|
||
|
klass = job.item["class"].constantize
|
||
|
klass.perform_async(*job.item["args"])
|
||
|
redirect_to admin_sidekiq_jobs_path, notice: "任务已立即执行"
|
||
|
else
|
||
|
redirect_to admin_sidekiq_jobs_path, alert: "任务未找到"
|
||
|
end
|
||
|
end
|
||
|
|
||
|
page_action :delete, method: :delete do
|
||
|
jid = params[:jid]
|
||
|
job = Sidekiq::ScheduledSet.new.find_job(jid)
|
||
|
if job
|
||
|
job.delete
|
||
|
redirect_to admin_sidekiq_jobs_path, notice: "任务已删除"
|
||
|
else
|
||
|
redirect_to admin_sidekiq_jobs_path, alert: "任务未找到"
|
||
|
end
|
||
|
end
|
||
|
end
|