songtianlun
ce5d09b621
- Add menu labels and parents for AdminUser, City, Country, Region, WeatherArt, Ahoy::Event, and Ahoy::Visit. - Introduce a new page for managing Sidekiq jobs, providing functionality to execute or delete scheduled jobs. - Adjust batch job for generating weather art by using Sidekiq for improved performance. - Implement clean-up worker for old Ahoy data and functionalities for refreshing the sitemap. These changes enhance the administration interface by providing better organization and management tools for backend entities. The addition of Sidekiq jobs management further improves system maintenance capabilities.
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
|