active_admin_delayed_job 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +15 -0
- data/.gitignore +16 -0
- data/Gemfile +8 -0
- data/MIT-LICENSE +20 -0
- data/Rakefile +40 -0
- data/active_admin_delayed_job.gemspec +17 -0
- data/app/models/delayed_job_decorator.rb +19 -0
- data/lib/active_admin_delayed_job/admin/delayed_jobs.rb +77 -0
- data/lib/active_admin_delayed_job/engine.rb +20 -0
- data/lib/active_admin_delayed_job.rb +4 -0
- data/readme.md +20 -0
- metadata +82 -0
checksums.yaml
ADDED
@@ -0,0 +1,15 @@
|
|
1
|
+
---
|
2
|
+
!binary "U0hBMQ==":
|
3
|
+
metadata.gz: !binary |-
|
4
|
+
ZGU5M2YyMDhjMGNlOTYzNzM0MzdjNzU1NDIzYjhlNWE3ZjM1ZTEzMA==
|
5
|
+
data.tar.gz: !binary |-
|
6
|
+
ZmQ4YmMxMzE3NzNmMTEyM2I3YTJhYTFjODE1NTNmYTY0MGEwZDM5YQ==
|
7
|
+
SHA512:
|
8
|
+
metadata.gz: !binary |-
|
9
|
+
MzNlMzZkNTk5NjE1YzEyOTc0NDVjNzVjY2M3YjFmNjFiYWVjYWVjMzdkMjJm
|
10
|
+
NzE2ZWJhNTY3NTY3ZjNmOTIyYWE2MWJhY2Y1Y2E2ZjUxM2ZhNDMwNDU4ZDg1
|
11
|
+
ZmUxYmQwOTA0ZDc3YjU0ZTkzMmYxNzBlM2U4YzAzZmE5NWU5MTE=
|
12
|
+
data.tar.gz: !binary |-
|
13
|
+
NmE2NjQ4YTcxNGY4ODJmNzgyMDliOWUxOGQwNDQ5MzFlODhjYmI1ZGU5ZDQ0
|
14
|
+
Yjg2MGQzNjYwMDViODI4OWNkODQ3MGRlNmI1Y2Q4YWNmMWJhOTlkYWY3OGI1
|
15
|
+
ZDc1Yjg3ZmQ0MTA5MmJjNjgyZjZmN2I0OWE0ZTE4NWZlNGZiNTc=
|
data/.gitignore
ADDED
data/Gemfile
ADDED
data/MIT-LICENSE
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
Copyright 2012 Darren Rush
|
2
|
+
|
3
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
4
|
+
a copy of this software and associated documentation files (the
|
5
|
+
"Software"), to deal in the Software without restriction, including
|
6
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
7
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
8
|
+
permit persons to whom the Software is furnished to do so, subject to
|
9
|
+
the following conditions:
|
10
|
+
|
11
|
+
The above copyright notice and this permission notice shall be
|
12
|
+
included in all copies or substantial portions of the Software.
|
13
|
+
|
14
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
15
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
16
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
17
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
18
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
19
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
20
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/Rakefile
ADDED
@@ -0,0 +1,40 @@
|
|
1
|
+
#!/usr/bin/env rake
|
2
|
+
begin
|
3
|
+
require 'bundler/setup'
|
4
|
+
rescue LoadError
|
5
|
+
puts 'You must `gem install bundler` and `bundle install` to run rake tasks'
|
6
|
+
end
|
7
|
+
begin
|
8
|
+
require 'rdoc/task'
|
9
|
+
rescue LoadError
|
10
|
+
require 'rdoc/rdoc'
|
11
|
+
require 'rake/rdoctask'
|
12
|
+
RDoc::Task = Rake::RDocTask
|
13
|
+
end
|
14
|
+
|
15
|
+
RDoc::Task.new(:rdoc) do |rdoc|
|
16
|
+
rdoc.rdoc_dir = 'rdoc'
|
17
|
+
rdoc.title = 'ActiveAdminDelayedJob'
|
18
|
+
rdoc.options << '--line-numbers'
|
19
|
+
rdoc.rdoc_files.include('README.rdoc')
|
20
|
+
rdoc.rdoc_files.include('lib/**/*.rb')
|
21
|
+
end
|
22
|
+
|
23
|
+
APP_RAKEFILE = File.expand_path("../test/dummy/Rakefile", __FILE__)
|
24
|
+
load 'rails/tasks/engine.rake'
|
25
|
+
|
26
|
+
|
27
|
+
|
28
|
+
Bundler::GemHelper.install_tasks
|
29
|
+
|
30
|
+
require 'rake/testtask'
|
31
|
+
|
32
|
+
Rake::TestTask.new(:test) do |t|
|
33
|
+
t.libs << 'lib'
|
34
|
+
t.libs << 'test'
|
35
|
+
t.pattern = 'test/**/*_test.rb'
|
36
|
+
t.verbose = false
|
37
|
+
end
|
38
|
+
|
39
|
+
|
40
|
+
task :default => :test
|
@@ -0,0 +1,17 @@
|
|
1
|
+
$:.push File.expand_path("../lib", __FILE__)
|
2
|
+
|
3
|
+
Gem::Specification.new do |s|
|
4
|
+
s.name = "active_admin_delayed_job"
|
5
|
+
s.version = "1.0.0"
|
6
|
+
s.authors = ["Michael Bianco", "Darren Rush"]
|
7
|
+
s.email = ["mike@cliffsidemedia.com"]
|
8
|
+
s.homepage = "http://github.com/iloveitaly/active_admin_delayed_job"
|
9
|
+
s.summary = "A plug-and-play controller that lets you monitor and retry jobs easily."
|
10
|
+
s.description = "View all, running, failed, and queued jobs. Retry failed jobs."
|
11
|
+
|
12
|
+
s.files = `git ls-files`.split("\n")
|
13
|
+
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
14
|
+
|
15
|
+
s.add_dependency 'activeadmin'
|
16
|
+
s.add_dependency 'delayed_job_active_record'
|
17
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
Delayed::Job.class_eval do
|
2
|
+
|
3
|
+
def state
|
4
|
+
return 'failed' unless failed_at.blank?
|
5
|
+
return 'running' unless locked_at.nil?
|
6
|
+
return 'scheduled' if run_at > created_at
|
7
|
+
return 'queued'
|
8
|
+
end
|
9
|
+
|
10
|
+
def retry!
|
11
|
+
j = self
|
12
|
+
j.run_at = Time.now
|
13
|
+
j.last_error = nil
|
14
|
+
j.failed_at = nil
|
15
|
+
j.attempts = 0
|
16
|
+
j.save
|
17
|
+
end
|
18
|
+
|
19
|
+
end
|
@@ -0,0 +1,77 @@
|
|
1
|
+
ActiveAdmin.register Delayed::Job, :as => "Background Job" do
|
2
|
+
menu label: "Background Jobs", title: 'Background Jobs', parent: "Dashboard"
|
3
|
+
|
4
|
+
actions :index, :show, :update, :edit, :destroy
|
5
|
+
|
6
|
+
filter :queue
|
7
|
+
|
8
|
+
batch_action 'Retry' do |selection|
|
9
|
+
Delayed::Job.find(selection).each do |job|
|
10
|
+
job.retry!
|
11
|
+
end
|
12
|
+
|
13
|
+
redirect_to self.send("#{ActiveAdmin.application.default_namespace}_background_jobs_path"), notice: "Retrying Jobs"
|
14
|
+
end
|
15
|
+
|
16
|
+
member_action :retry, method: :post do
|
17
|
+
job = Delayed::Job.find(params[:id])
|
18
|
+
job.retry!
|
19
|
+
|
20
|
+
# TODO there has got to be a better way to get the helper prefix
|
21
|
+
redirect_to self.send("#{ActiveAdmin.application.default_namespace}_background_jobs_path"), notice: "Retrying Job"
|
22
|
+
end
|
23
|
+
|
24
|
+
action_item only: :show do
|
25
|
+
link_to("Retry Job", self.send("retry_#{ActiveAdmin.application.default_namespace}_background_job_path", resource), method: :post)
|
26
|
+
end
|
27
|
+
|
28
|
+
index do
|
29
|
+
selectable_column
|
30
|
+
column :id
|
31
|
+
column :queue
|
32
|
+
column :priority
|
33
|
+
column :attempts
|
34
|
+
|
35
|
+
column :status do |job|
|
36
|
+
case job.state
|
37
|
+
when 'failed'
|
38
|
+
status_tag "Failed:", :error
|
39
|
+
span "#{job.last_error[0..100]}"
|
40
|
+
when 'running'
|
41
|
+
status_tag "Running", :warning
|
42
|
+
span "for #{time_ago_in_words(job.locked_at)} @ #{job.locked_by}"
|
43
|
+
when 'scheduled'
|
44
|
+
status_tag "Scheduled", :ok
|
45
|
+
span "for #{time_ago_in_words(job.run_at)} from now"
|
46
|
+
else
|
47
|
+
status_tag "Queued"
|
48
|
+
span "for #{time_ago_in_words(job.created_at)}"
|
49
|
+
end
|
50
|
+
|
51
|
+
end
|
52
|
+
|
53
|
+
actions defaults: true do |job|
|
54
|
+
link_to("Retry Job", self.send("retry_#{ActiveAdmin.application.default_namespace}_background_job_path", job), method: :post)
|
55
|
+
end
|
56
|
+
end
|
57
|
+
|
58
|
+
show do |job|
|
59
|
+
# customize handler + last_error fields
|
60
|
+
attributes_table *(default_attribute_table_rows - [:handler, :last_error]) do
|
61
|
+
row(:handler) { simple_format(job.handler) rescue "" }
|
62
|
+
row(:last_error) { simple_format(job.last_error) rescue "" }
|
63
|
+
end
|
64
|
+
end
|
65
|
+
|
66
|
+
# https://github.com/activeadmin/activeadmin/blob/9cfc45330e5ad31977b3ac7b2ccc1f8d6146c73f/lib/active_admin/views/pages/form.rb
|
67
|
+
form do |f|
|
68
|
+
f.inputs do
|
69
|
+
f.input :priority
|
70
|
+
f.input :handler
|
71
|
+
f.input :queue
|
72
|
+
end
|
73
|
+
|
74
|
+
f.actions
|
75
|
+
end
|
76
|
+
|
77
|
+
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
require 'activeadmin'
|
2
|
+
|
3
|
+
module ActiveAdminDelayedJob
|
4
|
+
class Engine < ::Rails::Engine
|
5
|
+
isolate_namespace ActiveAdminDelayedJob
|
6
|
+
engine_name 'active_admin_delayed_job'
|
7
|
+
|
8
|
+
initializer :active_admin_delayed_job do
|
9
|
+
ActiveAdmin.application.load_paths += Dir[File.dirname(__FILE__) + '/admin']
|
10
|
+
end
|
11
|
+
|
12
|
+
def self.activate
|
13
|
+
Dir.glob(File.join(File.dirname(__FILE__), "../../app/**/*_decorator*.rb")) do |c|
|
14
|
+
Rails.application.config.cache_classes ? require(c) : load(c)
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
config.to_prepare &method(:activate).to_proc
|
19
|
+
end
|
20
|
+
end
|
data/readme.md
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
# Active Admin Delayed Job Controller
|
2
|
+
This module adds a plug-and-play controller to your existing Active Admin setup. It allows you to view and manage the delayed jobs in your queue.
|
3
|
+
|
4
|
+
# Installation
|
5
|
+
Add this to your Gemfile
|
6
|
+
|
7
|
+
```
|
8
|
+
gem 'active_admin_delayed_job', :git => 'git://github.com/drush/active_admin_delayed_job.git'
|
9
|
+
|
10
|
+
# or from rubygems
|
11
|
+
|
12
|
+
gem 'active_admin_delayed_job'
|
13
|
+
```
|
14
|
+
|
15
|
+
## Features
|
16
|
+
|
17
|
+
* View all the delayed jobs in your system
|
18
|
+
* Filter to All, Running, Failed, and Queued jobs
|
19
|
+
* Select and Retry or Delete jobs
|
20
|
+
|
metadata
ADDED
@@ -0,0 +1,82 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: active_admin_delayed_job
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 1.0.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Michael Bianco
|
8
|
+
- Darren Rush
|
9
|
+
autorequire:
|
10
|
+
bindir: bin
|
11
|
+
cert_chain: []
|
12
|
+
date: 2014-10-16 00:00:00.000000000 Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
name: activeadmin
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
17
|
+
requirements:
|
18
|
+
- - ! '>='
|
19
|
+
- !ruby/object:Gem::Version
|
20
|
+
version: '0'
|
21
|
+
type: :runtime
|
22
|
+
prerelease: false
|
23
|
+
version_requirements: !ruby/object:Gem::Requirement
|
24
|
+
requirements:
|
25
|
+
- - ! '>='
|
26
|
+
- !ruby/object:Gem::Version
|
27
|
+
version: '0'
|
28
|
+
- !ruby/object:Gem::Dependency
|
29
|
+
name: delayed_job_active_record
|
30
|
+
requirement: !ruby/object:Gem::Requirement
|
31
|
+
requirements:
|
32
|
+
- - ! '>='
|
33
|
+
- !ruby/object:Gem::Version
|
34
|
+
version: '0'
|
35
|
+
type: :runtime
|
36
|
+
prerelease: false
|
37
|
+
version_requirements: !ruby/object:Gem::Requirement
|
38
|
+
requirements:
|
39
|
+
- - ! '>='
|
40
|
+
- !ruby/object:Gem::Version
|
41
|
+
version: '0'
|
42
|
+
description: View all, running, failed, and queued jobs. Retry failed jobs.
|
43
|
+
email:
|
44
|
+
- mike@cliffsidemedia.com
|
45
|
+
executables: []
|
46
|
+
extensions: []
|
47
|
+
extra_rdoc_files: []
|
48
|
+
files:
|
49
|
+
- .gitignore
|
50
|
+
- Gemfile
|
51
|
+
- MIT-LICENSE
|
52
|
+
- Rakefile
|
53
|
+
- active_admin_delayed_job.gemspec
|
54
|
+
- app/models/delayed_job_decorator.rb
|
55
|
+
- lib/active_admin_delayed_job.rb
|
56
|
+
- lib/active_admin_delayed_job/admin/delayed_jobs.rb
|
57
|
+
- lib/active_admin_delayed_job/engine.rb
|
58
|
+
- readme.md
|
59
|
+
homepage: http://github.com/iloveitaly/active_admin_delayed_job
|
60
|
+
licenses: []
|
61
|
+
metadata: {}
|
62
|
+
post_install_message:
|
63
|
+
rdoc_options: []
|
64
|
+
require_paths:
|
65
|
+
- lib
|
66
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
67
|
+
requirements:
|
68
|
+
- - ! '>='
|
69
|
+
- !ruby/object:Gem::Version
|
70
|
+
version: '0'
|
71
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - ! '>='
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '0'
|
76
|
+
requirements: []
|
77
|
+
rubyforge_project:
|
78
|
+
rubygems_version: 2.1.11
|
79
|
+
signing_key:
|
80
|
+
specification_version: 4
|
81
|
+
summary: A plug-and-play controller that lets you monitor and retry jobs easily.
|
82
|
+
test_files: []
|