rufus-scheduler 3.3.2 → 3.3.3
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 +4 -4
- data/CHANGELOG.txt +8 -0
- data/CREDITS.txt +3 -0
- data/README.md +14 -0
- data/fail.txt +2 -0
- data/lib/rufus/scheduler.rb +1 -1
- data/lib/rufus/scheduler/cronline.rb +1 -1
- data/lib/rufus/scheduler/jobs.rb +4 -5
- data/lib/rufus/scheduler/zotime.rb +17 -5
- metadata +21 -21
- data/t.txt +0 -25
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 31bff13de665010182dbbb8aad7b32be532e0fe7
|
|
4
|
+
data.tar.gz: 71389925d05e4c699246d0ce5b8509270e967909
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 5246e1928d1a4149f47133d55f107389542bbabe5f7772d48fc64406f3ec0573ec54b213fc5b2a59f7d0675cc247bfc3ef4b801415ce3b0cc92640735b7db3af
|
|
7
|
+
data.tar.gz: 375afb960f519c4f57167dd6e339a5c390b6b54066ef1469b6cbbf40cbc2ffe109f6f71da6afbfc1e51ac6c8b61d5529b63cf4c969c043abc7c7aec2507bb65f
|
data/CHANGELOG.txt
CHANGED
|
@@ -2,6 +2,14 @@
|
|
|
2
2
|
= rufus-scheduler CHANGELOG.txt
|
|
3
3
|
|
|
4
4
|
|
|
5
|
+
== rufus-scheduler - 3.3.3 released 2017-01-29
|
|
6
|
+
|
|
7
|
+
- use Rails' timezone by default if Rails is present, gh-230, gh-233,
|
|
8
|
+
thanks Alexander Deeb
|
|
9
|
+
- is_a?(Fixnum) replaced by is_a?(Integer), gh-232, thanks Cody Cutrer
|
|
10
|
+
- Fix for every double trigger, gh-231, thanks Sofia Bravo
|
|
11
|
+
|
|
12
|
+
|
|
5
13
|
== rufus-scheduler - 3.3.2 released 2017-01-05
|
|
6
14
|
|
|
7
15
|
- Fix ZoTime issue with Time.zone.now #=> 'CST', thanks zzjin
|
data/CREDITS.txt
CHANGED
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
|
|
5
5
|
== Contributors
|
|
6
6
|
|
|
7
|
+
- Cody Cutrer (https://github.com/ccutrer) - gh-232 is_a?(Fixnum) replacement
|
|
7
8
|
- Dominik Sander (https://github.com/dsander) - gh-225, gh-226
|
|
8
9
|
- Piavka (https://github.com/piavka) - Job#trigger_off_schedule, gh-214
|
|
9
10
|
- Paulo Delgado (https://github.com/paulodelgado) counter ActiveRecord, gh-210
|
|
@@ -52,6 +53,8 @@
|
|
|
52
53
|
|
|
53
54
|
== Feedback
|
|
54
55
|
|
|
56
|
+
- Alexander Deeb - https://github.com/adeeb1 - gh-230
|
|
57
|
+
- Sofia Bravo - http://stackoverflow.com/users/1123850/sofia-bravo - gh-231
|
|
55
58
|
- zzjin - https://githu.com/zzjin - 3.3.x vs CST abbreviated timezone - gh-228
|
|
56
59
|
- lovingyu - https://github.com/lovingyu - fallback to ENV['TZ'] - gh-222
|
|
57
60
|
- Ramon Tayag - https://github.com/ramontayag - prevent day 0 in cronlines
|
data/README.md
CHANGED
|
@@ -1458,6 +1458,20 @@ scheduler.every '2s' do
|
|
|
1458
1458
|
end
|
|
1459
1459
|
```
|
|
1460
1460
|
|
|
1461
|
+
On Rails you might want to try with:
|
|
1462
|
+
```ruby
|
|
1463
|
+
ENV['TZ'] = Time.zone.name # Rails only
|
|
1464
|
+
scheduler = Rufus::Scheduler.new
|
|
1465
|
+
scheduler.every '2s' do
|
|
1466
|
+
puts "#{Time.now} Hello #{ENV['TZ']}!"
|
|
1467
|
+
end
|
|
1468
|
+
```
|
|
1469
|
+
(Hat tip to Alexander in [gh-230](https://github.com/jmettraux/rufus-scheduler/issues/230))
|
|
1470
|
+
|
|
1471
|
+
Rails set its timezone under `config/application.rb`.
|
|
1472
|
+
|
|
1473
|
+
Rufus-Scheduler 3.3.3 detects the presence of Rails and uses its timezone setting (tested with Rails 4), so setting `ENV['TZ']` should not be necessary.
|
|
1474
|
+
|
|
1461
1475
|
The value can be determined thanks to [https://en.wikipedia.org/wiki/List_of_tz_database_time_zones](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones).
|
|
1462
1476
|
|
|
1463
1477
|
Use a "continent/city" identifier (for example "Asia/Shanghai"). Do not use an abbreviation (not "CST") and do not use a local time zone name (not "中国标准时间").
|
data/fail.txt
ADDED
data/lib/rufus/scheduler.rb
CHANGED
data/lib/rufus/scheduler/jobs.rb
CHANGED
|
@@ -426,7 +426,7 @@ module Rufus
|
|
|
426
426
|
|
|
427
427
|
fail ArgumentError.new(
|
|
428
428
|
"cannot accept :times => #{@times.inspect}, not nil or an int"
|
|
429
|
-
) unless @times == nil || @times.is_a?(
|
|
429
|
+
) unless @times == nil || @times.is_a?(Integer)
|
|
430
430
|
|
|
431
431
|
self.first_at =
|
|
432
432
|
opts[:first] || opts[:first_time] ||
|
|
@@ -567,11 +567,10 @@ module Rufus
|
|
|
567
567
|
n = Rufus::Scheduler::ZoTime.now
|
|
568
568
|
|
|
569
569
|
@next_time =
|
|
570
|
-
if @first_at == nil || @first_at
|
|
571
|
-
nt = (@next_time || trigger_time || n) + @frequency
|
|
572
|
-
nt > n ? nt : (trigger_time || n) + @frequency
|
|
573
|
-
else
|
|
570
|
+
if @first_at && (trigger_time == nil || @first_at > n)
|
|
574
571
|
@first_at
|
|
572
|
+
else
|
|
573
|
+
(@next_time || n) + @frequency
|
|
575
574
|
end
|
|
576
575
|
end
|
|
577
576
|
|
|
@@ -193,6 +193,11 @@ class Rufus::Scheduler
|
|
|
193
193
|
strftime('%H%M') + off + utc.strftime('(%H%M)')
|
|
194
194
|
end
|
|
195
195
|
|
|
196
|
+
def to_time_s
|
|
197
|
+
|
|
198
|
+
strftime("%H:%M:%S.#{'%06d' % usec}")
|
|
199
|
+
end
|
|
200
|
+
|
|
196
201
|
def self.now(zone=nil)
|
|
197
202
|
|
|
198
203
|
ZoTime.new(Time.now.to_f, zone)
|
|
@@ -282,10 +287,19 @@ class Rufus::Scheduler
|
|
|
282
287
|
return nil if str == nil
|
|
283
288
|
return nil if str == '*'
|
|
284
289
|
|
|
290
|
+
ostr = str
|
|
291
|
+
str = :current if str == :local
|
|
292
|
+
|
|
293
|
+
# use Rails' zone by default if Rails is present
|
|
294
|
+
|
|
295
|
+
return Time.zone.tzinfo if (
|
|
296
|
+
ENV['TZ'].nil? && str == :current &&
|
|
297
|
+
Time.respond_to?(:zone) && Time.zone.respond_to?(:tzinfo)
|
|
298
|
+
)
|
|
299
|
+
|
|
285
300
|
# ok, it's a timezone then
|
|
286
301
|
|
|
287
|
-
|
|
288
|
-
str = ENV['TZ'] || Time.now.zone if str == :current || str == :local
|
|
302
|
+
str = ENV['TZ'] || Time.now.zone if str == :current
|
|
289
303
|
|
|
290
304
|
# utc_offset
|
|
291
305
|
|
|
@@ -363,9 +377,7 @@ class Rufus::Scheduler
|
|
|
363
377
|
|
|
364
378
|
# last try with ENV['TZ']
|
|
365
379
|
|
|
366
|
-
z =
|
|
367
|
-
(ostr == :local || ostr == :current) &&
|
|
368
|
-
(::TZInfo::Timezone.get(ENV['TZ']) rescue nil)
|
|
380
|
+
z = ostr == :current && (::TZInfo::Timezone.get(ENV['TZ']) rescue nil)
|
|
369
381
|
return z if z
|
|
370
382
|
|
|
371
383
|
# so it's not a timezone.
|
metadata
CHANGED
|
@@ -1,55 +1,55 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: rufus-scheduler
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 3.3.
|
|
4
|
+
version: 3.3.3
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- John Mettraux
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2017-01-
|
|
11
|
+
date: 2017-01-29 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: tzinfo
|
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
|
16
16
|
requirements:
|
|
17
|
-
- -
|
|
17
|
+
- - ">="
|
|
18
18
|
- !ruby/object:Gem::Version
|
|
19
19
|
version: '0'
|
|
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
26
|
version: '0'
|
|
27
27
|
- !ruby/object:Gem::Dependency
|
|
28
28
|
name: rspec
|
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
|
30
30
|
requirements:
|
|
31
|
-
- -
|
|
31
|
+
- - ">="
|
|
32
32
|
- !ruby/object:Gem::Version
|
|
33
33
|
version: 2.13.0
|
|
34
34
|
type: :development
|
|
35
35
|
prerelease: false
|
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
|
37
37
|
requirements:
|
|
38
|
-
- -
|
|
38
|
+
- - ">="
|
|
39
39
|
- !ruby/object:Gem::Version
|
|
40
40
|
version: 2.13.0
|
|
41
41
|
- !ruby/object:Gem::Dependency
|
|
42
42
|
name: chronic
|
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
|
44
44
|
requirements:
|
|
45
|
-
- -
|
|
45
|
+
- - ">="
|
|
46
46
|
- !ruby/object:Gem::Version
|
|
47
47
|
version: '0'
|
|
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
54
|
version: '0'
|
|
55
55
|
description: job scheduler for Ruby (at, cron, in and every jobs).
|
|
@@ -59,25 +59,25 @@ executables: []
|
|
|
59
59
|
extensions: []
|
|
60
60
|
extra_rdoc_files: []
|
|
61
61
|
files:
|
|
62
|
+
- CHANGELOG.txt
|
|
63
|
+
- CREDITS.txt
|
|
64
|
+
- LICENSE.txt
|
|
62
65
|
- Makefile
|
|
66
|
+
- README.md
|
|
67
|
+
- TODO.txt
|
|
68
|
+
- fail.txt
|
|
69
|
+
- fail18.txt
|
|
70
|
+
- lib/rufus-scheduler.rb
|
|
71
|
+
- lib/rufus/scheduler.rb
|
|
63
72
|
- lib/rufus/scheduler/cronline.rb
|
|
64
73
|
- lib/rufus/scheduler/job_array.rb
|
|
65
74
|
- lib/rufus/scheduler/jobs.rb
|
|
66
75
|
- lib/rufus/scheduler/locks.rb
|
|
67
76
|
- lib/rufus/scheduler/util.rb
|
|
68
77
|
- lib/rufus/scheduler/zotime.rb
|
|
69
|
-
- lib/rufus/scheduler.rb
|
|
70
|
-
- lib/rufus-scheduler.rb
|
|
71
|
-
- rufus-scheduler.gemspec
|
|
72
|
-
- CHANGELOG.txt
|
|
73
|
-
- CREDITS.txt
|
|
74
|
-
- fail18.txt
|
|
75
|
-
- LICENSE.txt
|
|
76
78
|
- n.txt
|
|
77
79
|
- pics.txt
|
|
78
|
-
-
|
|
79
|
-
- TODO.txt
|
|
80
|
-
- README.md
|
|
80
|
+
- rufus-scheduler.gemspec
|
|
81
81
|
homepage: http://github.com/jmettraux/rufus-scheduler
|
|
82
82
|
licenses:
|
|
83
83
|
- MIT
|
|
@@ -88,17 +88,17 @@ require_paths:
|
|
|
88
88
|
- lib
|
|
89
89
|
required_ruby_version: !ruby/object:Gem::Requirement
|
|
90
90
|
requirements:
|
|
91
|
-
- -
|
|
91
|
+
- - ">="
|
|
92
92
|
- !ruby/object:Gem::Version
|
|
93
93
|
version: '0'
|
|
94
94
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
95
95
|
requirements:
|
|
96
|
-
- -
|
|
96
|
+
- - ">="
|
|
97
97
|
- !ruby/object:Gem::Version
|
|
98
98
|
version: '0'
|
|
99
99
|
requirements: []
|
|
100
100
|
rubyforge_project: rufus
|
|
101
|
-
rubygems_version: 2.
|
|
101
|
+
rubygems_version: 2.4.5.1
|
|
102
102
|
signing_key:
|
|
103
103
|
specification_version: 4
|
|
104
104
|
summary: job scheduler for Ruby (at, cron, in and every jobs)
|
data/t.txt
DELETED
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
**phase 4 - 2016-12-22**
|
|
3
|
-
|
|
4
|
-
> Added phase 3 logs to question. It looks like some how there is a new scheduler process that is subsequently created and then destroyed inside the model code. Thanks again for your diligence on this!
|
|
5
|
-
|
|
6
|
-
Is that really happening in the model code? Your logs tell us that it happens in another process. Your initial Ruby process initializes rufus-scheduler then your HTTP requests are served in worker processes which are forks of your initial process (without the threads, in other words with inactive schedulers).
|
|
7
|
-
|
|
8
|
-
You're using Puma in clustered mode. I should have immediately asked you about your configuration.
|
|
9
|
-
|
|
10
|
-
Read carefully its documentation at https://github.com/puma/puma#configuration
|
|
11
|
-
|
|
12
|
-
An easy fix would be not to use the clustered mode so that there is only one Ruby process involved, serving all the HTTP requests.
|
|
13
|
-
|
|
14
|
-
If you need the clustered mode, you have to change your way of thinking. You probably don't want to have 1 rufus-scheduler instance per worker thread. You could focus on having the core (live) rufus-scheduler in the main process. It could have a "management" job that checks recently updated metrics and unschedules/schedules jobs.
|
|
15
|
-
|
|
16
|
-
SCHEDULER.every '10s', overlap: false do
|
|
17
|
-
Metric.recently_updated.each do |metric|
|
|
18
|
-
SCHEDULER.jobs(tags: metric.id).each(&:unschedule)
|
|
19
|
-
SCHEDULER.every(metric.frequency, tags: self.id) { metric.add_value }
|
|
20
|
-
end
|
|
21
|
-
end
|
|
22
|
-
# or something like that...
|
|
23
|
-
|
|
24
|
-
Have fun!
|
|
25
|
-
|