resque-scheduler-web 0.0.4 → 1.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +16 -3
- data/app/controllers/resque_web/plugins/resque_scheduler/delayed_controller.rb +9 -13
- data/app/controllers/resque_web/plugins/resque_scheduler/schedules_controller.rb +27 -22
- data/app/models/resque_web/plugins/resque_scheduler/active_job_wrapper_timestamp_finder.rb +44 -0
- data/lib/resque/scheduler/web/version.rb +1 -1
- data/resque-scheduler-web.gemspec +4 -3
- data/spec/features/delayed/cancel_delayed_job_spec.rb +1 -2
- data/spec/features/delayed/clear_all_jobs_spec.rb +1 -3
- data/spec/features/delayed/delayed_jobs_index_page_spec.rb +0 -1
- data/spec/features/delayed/see_all_timestamps_for_a_class_spec.rb +12 -5
- data/spec/features/delayed/send_a_delayed_job_to_the_queue_spec.rb +1 -2
- data/spec/features/navigation_spec.rb +0 -1
- data/spec/features/schedules/cannot_delete_a_job_when_the_schedule_is_static.rb +1 -1
- data/spec/features/schedules/delete_a_job_from_the_dynamic_schedule_spec.rb +0 -1
- data/spec/features/schedules/requeuing_a_job_with_parameters_spec.rb +0 -1
- data/spec/features/schedules/requeuing_a_job_without_parameters_spec.rb +0 -3
- data/spec/features/schedules/scheduled_jobs_index_page_spec.rb +0 -2
- data/spec/spec_helper.rb +0 -2
- data/spec/support/functions.rb +1 -1
- data/spec/support/shared_steps.rb +3 -2
- data/spec/support/test_jobs.rb +2 -1
- metadata +11 -10
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b22c9cd715e57dce44caa7853e7e08d4e350d2f4
|
4
|
+
data.tar.gz: 7373cef2f98ff902b01525ecd803d89cd800028a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: bc136875c3fe92e0bfd7901f64aa172fa3618126fe2eb0837475bbb920c4811ff5dc6a72db848d1873db0b56ebdeb14026668d1145582e044adee4e23275cf33
|
7
|
+
data.tar.gz: 73c33314f777d50f0a0c390f8bd59befa2430e0bccab88ab6b6488a14d355c607d6b3475304b07c54b203046514afc460a6c45158a7d7d4e94473b1f46d2152c
|
data/README.md
CHANGED
@@ -7,9 +7,22 @@
|
|
7
7
|
[![Dependency Status](https://gemnasium.com/mattgibson/resque-scheduler-web.svg)](https://gemnasium.com/mattgibson/resque-scheduler-web)
|
8
8
|
[![Build Status](https://travis-ci.org/mattgibson/resque-scheduler-web.svg?branch=master)](https://travis-ci.org/mattgibson/resque-scheduler-web)
|
9
9
|
|
10
|
-
This gem provides tabs in [Resque Web](https://github.com/resque/resque-web)
|
11
|
-
|
12
|
-
|
10
|
+
This gem provides tabs in [Resque Web](https://github.com/resque/resque-web) for managing
|
11
|
+
[Resque Scheduler](https://github.com/resque/resque-scheduler).
|
12
|
+
|
13
|
+
It works with any version
|
14
|
+
of Resque and Resque Scheduler, but requires the [Resque Web gem](https://github.com/resque/resque-web),
|
15
|
+
rather than the older [Resque Web Sinatra interface](https://github.com/resque/resque/tree/1-x-stable#the-front-end)
|
16
|
+
that comes bundled with Resque 1.x.
|
17
|
+
|
18
|
+
This gem is a port of the old Sinatra code to the new REsque Web plugin architecture and has better test coverage
|
19
|
+
and a number of bug fixes compared to the older Resque Scheduler Sinatra code
|
20
|
+
which it is based on. The only reason to use the old Sinatra interface right now is if you have other
|
21
|
+
Resque plugins that have web interfaces that you need, but which have not been upgraded for the new Resque Web gem yet.
|
22
|
+
|
23
|
+
The Sinatra interface will be deprecated when Resque 2 is released, so if you want
|
24
|
+
to get ahead of the curve, you can start using the latest Resque Web gem today.
|
25
|
+
|
13
26
|
|
14
27
|
## Installation
|
15
28
|
|
@@ -21,19 +21,9 @@ module ResqueWeb
|
|
21
21
|
klass = Resque::Scheduler::Util.constantize(params[:klass])
|
22
22
|
@args = params[:args] ? JSON.load(URI.decode(params[:args])) : []
|
23
23
|
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
# mechanism.
|
28
|
-
if klass.to_s == 'ActiveJob::QueueAdapters::ResqueAdapter::JobWrapper'
|
29
|
-
queue_name = @args.first['queue_name']
|
30
|
-
hashed_job = Resque.send :job_to_hash_with_queue, queue_name, klass, @args
|
31
|
-
search = Resque.send :encode, hashed_job
|
32
|
-
@timestamps = Resque.instance_eval do
|
33
|
-
redis.smembers("timestamps:#{search}").map do |key|
|
34
|
-
key.tr('delayed:', '').to_i
|
35
|
-
end
|
36
|
-
end
|
24
|
+
if this_is_the_activejob_wrapper(klass)
|
25
|
+
# @timestamps = get_timestamps_for_activejob_wrapper(klass)
|
26
|
+
@timestamps = ActiveJobWrapperTimestampFinder.new(@args).perform
|
37
27
|
else
|
38
28
|
@timestamps = Resque.scheduled_at(klass, *@args)
|
39
29
|
end
|
@@ -82,6 +72,12 @@ module ResqueWeb
|
|
82
72
|
@size = Resque.delayed_timestamp_size(@timestamp)
|
83
73
|
@jobs = Resque.delayed_timestamp_peek(@timestamp, @start, 20)
|
84
74
|
end
|
75
|
+
|
76
|
+
protected
|
77
|
+
|
78
|
+
def this_is_the_activejob_wrapper(klass)
|
79
|
+
klass.to_s == 'ActiveJob::QueueAdapters::ResqueAdapter::JobWrapper'
|
80
|
+
end
|
85
81
|
end
|
86
82
|
end
|
87
83
|
end
|
@@ -12,27 +12,18 @@ module ResqueWeb
|
|
12
12
|
# GET /schedule
|
13
13
|
def index
|
14
14
|
Resque.reload_schedule! if Resque::Scheduler.dynamic
|
15
|
-
|
16
|
-
scheduled_in_this_env?(name)
|
17
|
-
end
|
18
|
-
keys = jobs_in_this_env.keys.sort
|
19
|
-
@scheduled_jobs = keys.inject({}) do |jobs, job_name|
|
20
|
-
jobs.merge(job_name => Resque.schedule[job_name])
|
21
|
-
end
|
15
|
+
@scheduled_jobs = scheduled_jobs_in_alphabetical_order
|
22
16
|
end
|
23
17
|
|
24
18
|
# DELETE /schedule
|
25
19
|
def destroy
|
26
|
-
if Resque::Scheduler.dynamic
|
27
|
-
job_name = params['job_name'] || params[:job_name]
|
28
|
-
Resque.remove_schedule(job_name)
|
29
|
-
end
|
20
|
+
Resque.remove_schedule(params[:job_name]) if Resque::Scheduler.dynamic
|
30
21
|
redirect_to Engine.app.url_helpers.schedules_path
|
31
22
|
end
|
32
23
|
|
33
24
|
# POST /schedule/requeue
|
34
25
|
def requeue
|
35
|
-
@job_name = params[
|
26
|
+
@job_name = params[:job_name]
|
36
27
|
config = Resque.schedule[@job_name]
|
37
28
|
@parameters = config['parameters'] || config[:parameters]
|
38
29
|
if @parameters
|
@@ -46,20 +37,34 @@ module ResqueWeb
|
|
46
37
|
# POST /schedule/requeue_with_params
|
47
38
|
def requeue_with_params
|
48
39
|
config = Resque.schedule[params[:job_name]]
|
49
|
-
|
50
|
-
|
40
|
+
new_config = original_config_merged_with_submitted_params(config)
|
41
|
+
Resque::Scheduler.enqueue_from_config(new_config)
|
42
|
+
redirect_to ResqueWeb::Engine.app.url_helpers.overview_path
|
43
|
+
end
|
44
|
+
|
45
|
+
protected
|
46
|
+
|
47
|
+
def original_config_merged_with_submitted_params(config)
|
48
|
+
existing_config_args = config['args'] || config[:args] || {}
|
49
|
+
new_config_args = existing_config_args.merge(submitted_params_for_job)
|
50
|
+
config.merge('args' => new_config_args)
|
51
|
+
end
|
52
|
+
|
53
|
+
# Build args hash from post data (removing the job name)
|
54
|
+
def submitted_params_for_job
|
55
|
+
params.reject do |key, _value|
|
51
56
|
%w(job_name action controller).include?(key)
|
52
57
|
end
|
58
|
+
end
|
53
59
|
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
new_config_args = existing_config_args.merge(submitted_args)
|
60
|
+
def jobs_in_this_env
|
61
|
+
Resque.schedule.select { |name| scheduled_in_this_env?(name) }
|
62
|
+
end
|
58
63
|
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
64
|
+
def scheduled_jobs_in_alphabetical_order
|
65
|
+
jobs_in_this_env.keys.sort.inject({}) do |jobs, job_name|
|
66
|
+
jobs.merge(job_name => Resque.schedule[job_name])
|
67
|
+
end
|
63
68
|
end
|
64
69
|
end
|
65
70
|
end
|
@@ -0,0 +1,44 @@
|
|
1
|
+
module ResqueWeb
|
2
|
+
module Plugins
|
3
|
+
module ResqueScheduler
|
4
|
+
# The way ActiveJob works breaks Resque Scheduler's method for finding
|
5
|
+
# the timestamps when jobs have been scheduled. This is because the
|
6
|
+
# queue name is stored as a parameter and is not accessible as an instance
|
7
|
+
# variable or via a class method. This class is used by the controller
|
8
|
+
# to handle the special case.
|
9
|
+
class ActiveJobWrapperTimestampFinder
|
10
|
+
def initialize(args)
|
11
|
+
@args = args
|
12
|
+
end
|
13
|
+
|
14
|
+
def perform
|
15
|
+
search_string = "timestamps:#{encoded_search_string}"
|
16
|
+
Resque.instance_eval do
|
17
|
+
redis.smembers(search_string).map do |key|
|
18
|
+
key.tr('delayed:', '').to_i
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
def encoded_search_string
|
24
|
+
Resque.send :encode, hashed_job
|
25
|
+
end
|
26
|
+
|
27
|
+
def hashed_job
|
28
|
+
Resque.send :job_to_hash_with_queue,
|
29
|
+
queue_name,
|
30
|
+
active_job_wrapper_class_name,
|
31
|
+
@args
|
32
|
+
end
|
33
|
+
|
34
|
+
def queue_name
|
35
|
+
@args.first['queue_name']
|
36
|
+
end
|
37
|
+
|
38
|
+
def active_job_wrapper_class_name
|
39
|
+
'ActiveJob::QueueAdapters::ResqueAdapter::JobWrapper'
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
@@ -17,16 +17,17 @@ Gem::Specification.new do |spec|
|
|
17
17
|
'Resque 1.x'
|
18
18
|
spec.homepage = 'https://github.com/mattgibson/resque-scheduler-web'
|
19
19
|
spec.license = 'MIT'
|
20
|
+
spec.required_ruby_version = '>= 1.9.3'
|
20
21
|
|
21
22
|
spec.files = `git ls-files -z`.split("\x0")
|
22
23
|
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
23
24
|
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
24
25
|
spec.require_paths = ['lib']
|
25
26
|
|
26
|
-
spec.add_runtime_dependency 'resque-web', '~> 0'
|
27
|
+
spec.add_runtime_dependency 'resque-web', '~> 0.0.8'
|
27
28
|
spec.add_runtime_dependency 'resque-scheduler', '~> 4.0'
|
28
29
|
|
29
|
-
spec.add_development_dependency 'bundler', '~> 1.
|
30
|
+
spec.add_development_dependency 'bundler', '~> 1.9'
|
30
31
|
spec.add_development_dependency 'rake', '~> 10.0'
|
31
32
|
spec.add_development_dependency 'rails', '~> 4.2'
|
32
33
|
spec.add_development_dependency 'sqlite3', '~> 1.3'
|
@@ -35,7 +36,7 @@ Gem::Specification.new do |spec|
|
|
35
36
|
spec.add_development_dependency 'codeclimate-test-reporter', '~> 0'
|
36
37
|
spec.add_development_dependency 'rubocop', '~> 0'
|
37
38
|
spec.add_development_dependency 'rubocop-rspec', '~> 1.0'
|
38
|
-
spec.add_development_dependency 'launchy', '~>
|
39
|
+
spec.add_development_dependency 'launchy', '~> 2.4'
|
39
40
|
# Avoids non-thread-safe error.
|
40
41
|
spec.add_development_dependency 'sass', '~> 3.4'
|
41
42
|
end
|
@@ -1,7 +1,6 @@
|
|
1
1
|
require 'rails_helper'
|
2
2
|
|
3
3
|
feature 'cancelling a delayed job' do
|
4
|
-
|
5
4
|
include SharedFunctionsForFeatures
|
6
5
|
|
7
6
|
scenario 'cancelling the job from the search page' do
|
@@ -25,4 +24,4 @@ feature 'cancelling a delayed job' do
|
|
25
24
|
def and_the_job_should_not_be_present_on_the_page
|
26
25
|
expect(page).to_not have_content 'SomeIvarJob'
|
27
26
|
end
|
28
|
-
end
|
27
|
+
end
|
@@ -1,7 +1,6 @@
|
|
1
1
|
require 'rails_helper'
|
2
2
|
|
3
3
|
feature 'clearing all of the delayed jobs' do
|
4
|
-
|
5
4
|
include SharedFunctionsForFeatures
|
6
5
|
|
7
6
|
scenario 'clearing the jobs from the delayed index' do
|
@@ -20,5 +19,4 @@ feature 'clearing all of the delayed jobs' do
|
|
20
19
|
def and_i_click_the_clear_all_jobs_button
|
21
20
|
click_button 'Clear All Delayed Jobs'
|
22
21
|
end
|
23
|
-
|
24
|
-
end
|
22
|
+
end
|
@@ -1,7 +1,6 @@
|
|
1
1
|
require 'rails_helper'
|
2
2
|
|
3
3
|
feature 'seeing all of the timestamps where a class is delayed' do
|
4
|
-
|
5
4
|
include SharedFunctionsForFeatures
|
6
5
|
|
7
6
|
scenario 'viewing the timestamps page with no params' do
|
@@ -26,11 +25,15 @@ feature 'seeing all of the timestamps where a class is delayed' do
|
|
26
25
|
end
|
27
26
|
|
28
27
|
def then_i_should_be_on_the_delayed_class_page
|
29
|
-
|
28
|
+
path_params = {klass: 'SomeIvarJob'}
|
29
|
+
path = resque_scheduler_engine_routes.delayed_job_class_path path_params
|
30
|
+
expect(current_path).to eq path
|
30
31
|
end
|
31
32
|
|
32
33
|
def then_i_should_be_on_the_delayed_class_page_with_params
|
33
|
-
|
34
|
+
path_params = {klass: 'JobWithParams'}
|
35
|
+
path = resque_scheduler_engine_routes.delayed_job_class_path path_params
|
36
|
+
expect(current_path).to eq path
|
34
37
|
end
|
35
38
|
|
36
39
|
def and_i_should_see_the_timestamp_on_the_page
|
@@ -38,7 +41,9 @@ feature 'seeing all of the timestamps where a class is delayed' do
|
|
38
41
|
end
|
39
42
|
|
40
43
|
def given_there_is_a_delayed_job_with_params
|
41
|
-
Resque.enqueue_at(some_time_in_the_future,
|
44
|
+
Resque.enqueue_at(some_time_in_the_future,
|
45
|
+
JobWithParams,
|
46
|
+
argument: 'thingy')
|
42
47
|
end
|
43
48
|
|
44
49
|
def given_there_is_a_delayed_job_with_active_job
|
@@ -50,6 +55,8 @@ feature 'seeing all of the timestamps where a class is delayed' do
|
|
50
55
|
end
|
51
56
|
|
52
57
|
def then_i_should_be_on_the_timestamp_page
|
53
|
-
|
58
|
+
path_params = { timestamp: some_time_in_the_future.to_i }
|
59
|
+
path = resque_scheduler_engine_routes.timestamp_path path_params
|
60
|
+
expect(current_path).to eq path
|
54
61
|
end
|
55
62
|
end
|
@@ -1,7 +1,6 @@
|
|
1
1
|
require 'rails_helper'
|
2
2
|
|
3
3
|
feature 'Sending a delayed job to the queue for immediate execution' do
|
4
|
-
|
5
4
|
include SharedFunctionsForFeatures
|
6
5
|
|
7
6
|
let(:queue_name) { 'ivar' }
|
@@ -26,4 +25,4 @@ feature 'Sending a delayed job to the queue for immediate execution' do
|
|
26
25
|
def then_i_should_not_see_any_delayed_jobs
|
27
26
|
expect(page).to have_content 'There are no delayed jobs'
|
28
27
|
end
|
29
|
-
end
|
28
|
+
end
|
@@ -1,7 +1,6 @@
|
|
1
1
|
require 'rails_helper'
|
2
2
|
|
3
3
|
feature 'requeuing a job that has no params' do
|
4
|
-
|
5
4
|
include SharedFunctionsForFeatures
|
6
5
|
|
7
6
|
before do
|
@@ -42,6 +41,4 @@ feature 'requeuing a job that has no params' do
|
|
42
41
|
def and_i_requeue_the_job
|
43
42
|
click_button "requeue_job_#{job_name}"
|
44
43
|
end
|
45
|
-
|
46
|
-
|
47
44
|
end
|
@@ -1,7 +1,6 @@
|
|
1
1
|
require 'rails_helper'
|
2
2
|
|
3
3
|
feature 'Viewing the schedule page and interacting with it' do
|
4
|
-
|
5
4
|
include SharedFunctionsForFeatures
|
6
5
|
|
7
6
|
before do
|
@@ -90,5 +89,4 @@ feature 'Viewing the schedule page and interacting with it' do
|
|
90
89
|
def when_i_visit_the_scheduler_page
|
91
90
|
visit resque_scheduler_engine_routes.schedules_path
|
92
91
|
end
|
93
|
-
|
94
92
|
end
|
data/spec/spec_helper.rb
CHANGED
@@ -8,7 +8,6 @@ require 'resque-scheduler'
|
|
8
8
|
require_relative 'support/functions'
|
9
9
|
require_relative 'support/shared_steps'
|
10
10
|
|
11
|
-
|
12
11
|
Resque::Scheduler.configure do |c|
|
13
12
|
c.quiet = true
|
14
13
|
end
|
@@ -95,4 +94,3 @@ end
|
|
95
94
|
def resque_scheduler_engine_routes
|
96
95
|
ResqueWeb::Plugins::ResqueScheduler::Engine.app.url_helpers
|
97
96
|
end
|
98
|
-
|
data/spec/support/functions.rb
CHANGED
@@ -1,5 +1,7 @@
|
|
1
|
+
# This should be mixed in to all of the Rspec feature specs so that we can
|
2
|
+
# avoid duplication of common functions and can be sure that Resque and the
|
3
|
+
# queues will be reset cleanly after each scenario.
|
1
4
|
module SharedFunctionsForFeatures
|
2
|
-
|
3
5
|
def self.included(base)
|
4
6
|
base.instance_eval do
|
5
7
|
let(:some_time_in_the_future) { Time.now + 3600 }
|
@@ -44,4 +46,3 @@ module SharedFunctionsForFeatures
|
|
44
46
|
expect(page).to have_content job_class
|
45
47
|
end
|
46
48
|
end
|
47
|
-
|
data/spec/support/test_jobs.rb
CHANGED
@@ -48,6 +48,8 @@ JobWithoutParams = Class.new(JobWithParams) do
|
|
48
48
|
@queue = :quick
|
49
49
|
end
|
50
50
|
|
51
|
+
# Allows us to test whether jobs added via the ActiveJob wrapper are correctly
|
52
|
+
# handled.
|
51
53
|
class ActiveJobTest < ActiveJob::Base
|
52
54
|
queue_as :test_queue
|
53
55
|
|
@@ -56,7 +58,6 @@ class ActiveJobTest < ActiveJob::Base
|
|
56
58
|
end
|
57
59
|
|
58
60
|
def perform
|
59
|
-
|
60
61
|
end
|
61
62
|
end
|
62
63
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: resque-scheduler-web
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0
|
4
|
+
version: 1.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Matt Gibson
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2016-05-18 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: resque-web
|
@@ -16,14 +16,14 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version:
|
19
|
+
version: 0.0.8
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version:
|
26
|
+
version: 0.0.8
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: resque-scheduler
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
@@ -44,14 +44,14 @@ dependencies:
|
|
44
44
|
requirements:
|
45
45
|
- - "~>"
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version: '1.
|
47
|
+
version: '1.9'
|
48
48
|
type: :development
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
52
|
- - "~>"
|
53
53
|
- !ruby/object:Gem::Version
|
54
|
-
version: '1.
|
54
|
+
version: '1.9'
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
56
|
name: rake
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
@@ -170,14 +170,14 @@ dependencies:
|
|
170
170
|
requirements:
|
171
171
|
- - "~>"
|
172
172
|
- !ruby/object:Gem::Version
|
173
|
-
version: '
|
173
|
+
version: '2.4'
|
174
174
|
type: :development
|
175
175
|
prerelease: false
|
176
176
|
version_requirements: !ruby/object:Gem::Requirement
|
177
177
|
requirements:
|
178
178
|
- - "~>"
|
179
179
|
- !ruby/object:Gem::Version
|
180
|
-
version: '
|
180
|
+
version: '2.4'
|
181
181
|
- !ruby/object:Gem::Dependency
|
182
182
|
name: sass
|
183
183
|
requirement: !ruby/object:Gem::Requirement
|
@@ -216,6 +216,7 @@ files:
|
|
216
216
|
- app/controllers/resque_web/plugins/resque_scheduler/schedules_controller.rb
|
217
217
|
- app/helpers/resque_web/plugins/resque_scheduler/delayed_helper.rb
|
218
218
|
- app/helpers/resque_web/plugins/resque_scheduler/schedules_helper.rb
|
219
|
+
- app/models/resque_web/plugins/resque_scheduler/active_job_wrapper_timestamp_finder.rb
|
219
220
|
- app/models/resque_web/plugins/resque_scheduler/job_finder.rb
|
220
221
|
- app/models/resque_web/plugins/resque_scheduler/job_finder/working_job_finder.rb
|
221
222
|
- app/views/resque_web/plugins/resque_scheduler/delayed/_next_more.erb
|
@@ -309,7 +310,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
309
310
|
requirements:
|
310
311
|
- - ">="
|
311
312
|
- !ruby/object:Gem::Version
|
312
|
-
version:
|
313
|
+
version: 1.9.3
|
313
314
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
314
315
|
requirements:
|
315
316
|
- - ">="
|
@@ -317,7 +318,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
317
318
|
version: '0'
|
318
319
|
requirements: []
|
319
320
|
rubyforge_project:
|
320
|
-
rubygems_version: 2.4.
|
321
|
+
rubygems_version: 2.4.8
|
321
322
|
signing_key:
|
322
323
|
specification_version: 4
|
323
324
|
summary: This gem provides tabs in Resque Web for managing Resque Scheduler.
|