rufus-scheduler 3.5.1 → 3.5.2
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 +5 -5
- data/CHANGELOG.md +6 -0
- data/CREDITS.md +5 -4
- data/README.md +3 -0
- data/lib/rufus/scheduler.rb +2 -31
- data/lib/rufus/scheduler/jobs.rb +36 -0
- data/rufus-scheduler.gemspec +11 -1
- metadata +10 -6
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
|
-
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
2
|
+
SHA256:
|
|
3
|
+
metadata.gz: cc94e118313d64c54f5690f3c2a144c21f7b56c0719c36a0642982f468469750
|
|
4
|
+
data.tar.gz: 52f2bf8923744d67938cbf0dfa764d8e6304fab512188c916505cf342203ec54
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: f02d8f20e5acaeaa27a8c9e0895e8c1fc5ba534c2c228e683ac36042e32f5306cade78225dc8335e38fab8f724a6edf23b0196d5506d53c989af0e88e65cdbef
|
|
7
|
+
data.tar.gz: 9aa6c0211441f60d3b326b6d35abde28dbe01558830288b3a4f7d2aed9523e6bf690345ca39656dafc976dec3a658b435735ea8f568cc02856861e074de2f226
|
data/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,12 @@
|
|
|
2
2
|
# CHANGELOG.md
|
|
3
3
|
|
|
4
4
|
|
|
5
|
+
### rufus-scheduler 3.5.2 - released 2018-08-01
|
|
6
|
+
|
|
7
|
+
* Use Fugit::Cron#rough_frequency
|
|
8
|
+
* Improve Job#check_frequency performance, gh-276, @drcapulet
|
|
9
|
+
|
|
10
|
+
|
|
5
11
|
### rufus-scheduler 3.5.1 - released 2018-07-20
|
|
6
12
|
|
|
7
13
|
* Upgrade fugit to 1.1.4 (with out of DST issue fix)
|
data/CREDITS.md
CHANGED
|
@@ -4,10 +4,11 @@
|
|
|
4
4
|
|
|
5
5
|
## Contributors
|
|
6
6
|
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
7
|
+
* Alex Coomans (https://github.com/drcapulet) gh-276 freq check pref improvement
|
|
8
|
+
* Vais Salikhov (https://github.com/vais) many document clarifications
|
|
9
|
+
* Wes McNamee (https://github.com/ghostsquad) let #schedule accept a CronLine
|
|
10
|
+
* Joe Rafaniello (https://github.com/jrafanie) Travis Ruby 2.4.1
|
|
11
|
+
* Benjamin Fleischer (https://github.com/bf4) ZoTime#subtract
|
|
11
12
|
* Sam Rowe (https://github.com/riddley) gh-240 timezone for Debian
|
|
12
13
|
* Daniel Rodgers-Pryor (https://github.com/djrodgerspryor), gh-238 fix ZooKeeper example
|
|
13
14
|
* Cody Cutrer (https://github.com/ccutrer) gh-232 is_a?(Fixnum) replacement
|
data/README.md
CHANGED
data/lib/rufus/scheduler.rb
CHANGED
|
@@ -11,7 +11,7 @@ module Rufus
|
|
|
11
11
|
|
|
12
12
|
class Scheduler
|
|
13
13
|
|
|
14
|
-
VERSION = '3.5.
|
|
14
|
+
VERSION = '3.5.2'
|
|
15
15
|
|
|
16
16
|
EoTime = ::EtOrbi::EoTime
|
|
17
17
|
|
|
@@ -615,36 +615,7 @@ module Rufus
|
|
|
615
615
|
end
|
|
616
616
|
|
|
617
617
|
job = job_class.new(self, t, opts, block || callable)
|
|
618
|
-
|
|
619
|
-
#fail ArgumentError.new(
|
|
620
|
-
# "job frequency (#{job.frequency}) is higher than " +
|
|
621
|
-
# "scheduler frequency (#{@frequency})"
|
|
622
|
-
#) if job.respond_to?(:frequency) && job.frequency < @frequency
|
|
623
|
-
#
|
|
624
|
-
# This was expensive
|
|
625
|
-
|
|
626
|
-
if (
|
|
627
|
-
! job.is_a?(Rufus::Scheduler::IntervalJob) &&
|
|
628
|
-
job.methods.include?(:next_time_from)
|
|
629
|
-
) then
|
|
630
|
-
|
|
631
|
-
nts = (1..365)
|
|
632
|
-
.inject([ job.send(:next_time_from, EtOrbi.now) ]) { |a, i|
|
|
633
|
-
a << job.send(:next_time_from, a.last); a }
|
|
634
|
-
deltas = []; prev = nts.shift
|
|
635
|
-
while (nt = nts.shift); deltas << (nt - prev).to_f; prev = nt; end
|
|
636
|
-
|
|
637
|
-
deltas = deltas[1..-1] \
|
|
638
|
-
if opts.keys.find { |k| k.to_s.match(/\Afirst/) }
|
|
639
|
-
#
|
|
640
|
-
# do not consider the first delta if there is a first, first_at,
|
|
641
|
-
# or first_in involved
|
|
642
|
-
|
|
643
|
-
fail ArgumentError.new(
|
|
644
|
-
"job frequency (~max #{deltas.min}s) is higher than " +
|
|
645
|
-
"scheduler frequency (#{@frequency})"
|
|
646
|
-
) if deltas.min < @frequency * 0.9
|
|
647
|
-
end
|
|
618
|
+
job.check_frequency
|
|
648
619
|
|
|
649
620
|
@jobs.push(job)
|
|
650
621
|
|
data/lib/rufus/scheduler/jobs.rb
CHANGED
|
@@ -95,6 +95,14 @@ module Rufus
|
|
|
95
95
|
|
|
96
96
|
alias job_id id
|
|
97
97
|
|
|
98
|
+
# Will fail with an ArgumentError if the job frequency is higher than
|
|
99
|
+
# the scheduler frequency.
|
|
100
|
+
#
|
|
101
|
+
def check_frequency
|
|
102
|
+
|
|
103
|
+
# this parent implementation never fails
|
|
104
|
+
end
|
|
105
|
+
|
|
98
106
|
def trigger(time)
|
|
99
107
|
|
|
100
108
|
@previous_time = @next_time
|
|
@@ -543,6 +551,14 @@ module Rufus
|
|
|
543
551
|
set_next_time(nil)
|
|
544
552
|
end
|
|
545
553
|
|
|
554
|
+
def check_frequency
|
|
555
|
+
|
|
556
|
+
fail ArgumentError.new(
|
|
557
|
+
"job frequency (#{@frequency}s) is higher than " +
|
|
558
|
+
"scheduler frequency (#{@scheduler.frequency}s)"
|
|
559
|
+
) if @frequency < @scheduler.frequency
|
|
560
|
+
end
|
|
561
|
+
|
|
546
562
|
protected
|
|
547
563
|
|
|
548
564
|
def set_next_time(trigger_time, is_post=false)
|
|
@@ -620,11 +636,31 @@ module Rufus
|
|
|
620
636
|
set_next_time(nil)
|
|
621
637
|
end
|
|
622
638
|
|
|
639
|
+
def check_frequency
|
|
640
|
+
|
|
641
|
+
return if @scheduler.frequency <= 1
|
|
642
|
+
#
|
|
643
|
+
# The minimum time delta in a cron job is 1 second, so if the
|
|
644
|
+
# scheduler frequency is less than that, no worries.
|
|
645
|
+
|
|
646
|
+
f = @cron_line.rough_frequency
|
|
647
|
+
|
|
648
|
+
fail ArgumentError.new(
|
|
649
|
+
"job frequency (min ~#{f}s) is higher than " +
|
|
650
|
+
"scheduler frequency (#{@scheduler.frequency}s)"
|
|
651
|
+
) if f < @scheduler.frequency
|
|
652
|
+
end
|
|
653
|
+
|
|
623
654
|
def brute_frequency
|
|
624
655
|
|
|
625
656
|
@cron_line.brute_frequency
|
|
626
657
|
end
|
|
627
658
|
|
|
659
|
+
def rough_frequency
|
|
660
|
+
|
|
661
|
+
@cron_line.rough_frequency
|
|
662
|
+
end
|
|
663
|
+
|
|
628
664
|
protected
|
|
629
665
|
|
|
630
666
|
def set_next_time(trigger_time, is_post=false)
|
data/rufus-scheduler.gemspec
CHANGED
|
@@ -19,6 +19,16 @@ Gem::Specification.new do |s|
|
|
|
19
19
|
Job scheduler for Ruby (at, cron, in and every jobs). Not a replacement for crond.
|
|
20
20
|
}.strip
|
|
21
21
|
|
|
22
|
+
s.metadata = {
|
|
23
|
+
'changelog_uri' => s.homepage + '/blob/master/CHANGELOG.md',
|
|
24
|
+
'bug_tracker_uri' => s.homepage + '/issues',
|
|
25
|
+
'homepage_uri' => s.homepage,
|
|
26
|
+
'source_code_uri' => s.homepage,
|
|
27
|
+
#'wiki_uri' => s.homepage + '/flor/wiki',
|
|
28
|
+
#'documentation_uri' => s.homepage + '/tree/master/doc',
|
|
29
|
+
#'mailing_list_uri' => 'https://groups.google.com/forum/#!forum/floraison',
|
|
30
|
+
}
|
|
31
|
+
|
|
22
32
|
#s.files = `git ls-files`.split("\n")
|
|
23
33
|
s.files = Dir[
|
|
24
34
|
'README.{md,txt}',
|
|
@@ -30,7 +40,7 @@ Job scheduler for Ruby (at, cron, in and every jobs). Not a replacement for cron
|
|
|
30
40
|
|
|
31
41
|
s.required_ruby_version = '>= 1.9'
|
|
32
42
|
|
|
33
|
-
s.add_runtime_dependency 'fugit', '~> 1.1', '>= 1.1.
|
|
43
|
+
s.add_runtime_dependency 'fugit', '~> 1.1', '>= 1.1.5'
|
|
34
44
|
|
|
35
45
|
s.add_development_dependency 'rspec', '~> 3.7'
|
|
36
46
|
s.add_development_dependency 'chronic', '~> 0.10'
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: rufus-scheduler
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 3.5.
|
|
4
|
+
version: 3.5.2
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- John Mettraux
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2018-07-
|
|
11
|
+
date: 2018-07-31 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: fugit
|
|
@@ -19,7 +19,7 @@ dependencies:
|
|
|
19
19
|
version: '1.1'
|
|
20
20
|
- - ">="
|
|
21
21
|
- !ruby/object:Gem::Version
|
|
22
|
-
version: 1.1.
|
|
22
|
+
version: 1.1.5
|
|
23
23
|
type: :runtime
|
|
24
24
|
prerelease: false
|
|
25
25
|
version_requirements: !ruby/object:Gem::Requirement
|
|
@@ -29,7 +29,7 @@ dependencies:
|
|
|
29
29
|
version: '1.1'
|
|
30
30
|
- - ">="
|
|
31
31
|
- !ruby/object:Gem::Version
|
|
32
|
-
version: 1.1.
|
|
32
|
+
version: 1.1.5
|
|
33
33
|
- !ruby/object:Gem::Dependency
|
|
34
34
|
name: rspec
|
|
35
35
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -81,7 +81,11 @@ files:
|
|
|
81
81
|
homepage: http://github.com/jmettraux/rufus-scheduler
|
|
82
82
|
licenses:
|
|
83
83
|
- MIT
|
|
84
|
-
metadata:
|
|
84
|
+
metadata:
|
|
85
|
+
changelog_uri: http://github.com/jmettraux/rufus-scheduler/blob/master/CHANGELOG.md
|
|
86
|
+
bug_tracker_uri: http://github.com/jmettraux/rufus-scheduler/issues
|
|
87
|
+
homepage_uri: http://github.com/jmettraux/rufus-scheduler
|
|
88
|
+
source_code_uri: http://github.com/jmettraux/rufus-scheduler
|
|
85
89
|
post_install_message:
|
|
86
90
|
rdoc_options: []
|
|
87
91
|
require_paths:
|
|
@@ -98,7 +102,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
98
102
|
version: '0'
|
|
99
103
|
requirements: []
|
|
100
104
|
rubyforge_project: rufus
|
|
101
|
-
rubygems_version: 2.
|
|
105
|
+
rubygems_version: 2.7.6
|
|
102
106
|
signing_key:
|
|
103
107
|
specification_version: 4
|
|
104
108
|
summary: job scheduler for Ruby (at, cron, in and every jobs)
|