today_ai_weather/app/admin/sidekiq_jobs.rb

79 lines
2.2 KiB
Ruby
Raw Normal View History

# 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