diff --git a/app/controllers/delayed_jobs_controller.rb b/app/controllers/delayed_jobs_controller.rb index 8f6a8755d..ef0f3e02f 100644 --- a/app/controllers/delayed_jobs_controller.rb +++ b/app/controllers/delayed_jobs_controller.rb @@ -1,7 +1,41 @@ class DelayedJobsController < ApplicationController - respond_to :html, :xml, :json + respond_to :html, :xml, :json, :js + before_filter :admin_only, except: [:index] + def index @delayed_jobs = Delayed::Job.order("created_at desc").paginate(params[:page], :limit => params[:limit]) respond_with(@delayed_jobs) end + + def cancel + @job = Delayed::Job.find(params[:id]) + if !@job.locked_at? + @job.fail! + end + respond_with(@job) + end + + def retry + @job = Delayed::Job.find(params[:id]) + if !@job.locked_at? + @job.update({failed_at: nil, attempts: 0}, without_protection: true) + end + respond_with(@job) + end + + def run + @job = Delayed::Job.find(params[:id]) + if !@job.locked_at? + @job.update(run_at: Time.now) + end + respond_with(@job) + end + + def destroy + @job = Delayed::Job.find(params[:id]) + if !@job.locked_at? + @job.destroy + end + respond_with(@job) + end end diff --git a/app/views/delayed_jobs/cancel.js.erb b/app/views/delayed_jobs/cancel.js.erb new file mode 100644 index 000000000..345366b9b --- /dev/null +++ b/app/views/delayed_jobs/cancel.js.erb @@ -0,0 +1 @@ +location.reload(); diff --git a/app/views/delayed_jobs/destroy.js.erb b/app/views/delayed_jobs/destroy.js.erb new file mode 100644 index 000000000..345366b9b --- /dev/null +++ b/app/views/delayed_jobs/destroy.js.erb @@ -0,0 +1 @@ +location.reload(); diff --git a/app/views/delayed_jobs/index.html.erb b/app/views/delayed_jobs/index.html.erb index 3aab89c15..a3be6de31 100644 --- a/app/views/delayed_jobs/index.html.erb +++ b/app/views/delayed_jobs/index.html.erb @@ -14,6 +14,7 @@