rufus-scheduler 3.3.3 → 3.3.4

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 31bff13de665010182dbbb8aad7b32be532e0fe7
4
- data.tar.gz: 71389925d05e4c699246d0ce5b8509270e967909
3
+ metadata.gz: aadc34a3585ec0563a43eeecee75009ac311490f
4
+ data.tar.gz: ea9e07f929da453a7fe63711bd80c75457444f6d
5
5
  SHA512:
6
- metadata.gz: 5246e1928d1a4149f47133d55f107389542bbabe5f7772d48fc64406f3ec0573ec54b213fc5b2a59f7d0675cc247bfc3ef4b801415ce3b0cc92640735b7db3af
7
- data.tar.gz: 375afb960f519c4f57167dd6e339a5c390b6b54066ef1469b6cbbf40cbc2ffe109f6f71da6afbfc1e51ac6c8b61d5529b63cf4c969c043abc7c7aec2507bb65f
6
+ metadata.gz: f43b61128d67c893d88a1a796dbf029c3d18577a80d4f8874c25d8272318252c96da6f499c561e5bafa25349c228d0c950a937db12b492ef2f348667b2ba700d
7
+ data.tar.gz: c01cbfd377824b64f148f515e65db781f5433eaab1d574fd46c45210139bf1fbbb3ec5b8208f371044bdde909bb7917d38955d5e3dd8fcd3bdff79ef4f52d450
@@ -2,6 +2,11 @@
2
2
  = rufus-scheduler CHANGELOG.txt
3
3
 
4
4
 
5
+ == rufus-scheduler - 3.3.4 released 2017-02-16
6
+
7
+ - More detailed "cannot determine timezone from nil" message, gh-237
8
+
9
+
5
10
  == rufus-scheduler - 3.3.3 released 2017-01-29
6
11
 
7
12
  - use Rails' timezone by default if Rails is present, gh-230, gh-233,
@@ -53,6 +53,7 @@
53
53
 
54
54
  == Feedback
55
55
 
56
+ - Yoshimi Keiji - https://githuc.com/walf443 - v.3.3.3 mislabelling
56
57
  - Alexander Deeb - https://github.com/adeeb1 - gh-230
57
58
  - Sofia Bravo - http://stackoverflow.com/users/1123850/sofia-bravo - gh-231
58
59
  - zzjin - https://githu.com/zzjin - 3.3.x vs CST abbreviated timezone - gh-228
data/README.md CHANGED
@@ -1449,7 +1449,7 @@ rufus-scheduler/lib/rufus/scheduler/zotime.rb:41:
1449
1449
  ...
1450
1450
  ```
1451
1451
 
1452
- It may happen on Windows or on systems that poor hints to Ruby on which timezone to use. It should be solved by setting explicitely the `ENV['TZ']` before the scheduler instantiation:
1452
+ It may happen on Windows or on systems that poorly hints to Ruby on which timezone to use. It should be solved by setting explicitely the `ENV['TZ']` before the scheduler instantiation:
1453
1453
  ```ruby
1454
1454
  ENV['TZ'] = 'Asia/Shanghai'
1455
1455
  scheduler = Rufus::Scheduler.new
@@ -1468,18 +1468,23 @@ end
1468
1468
  ```
1469
1469
  (Hat tip to Alexander in [gh-230](https://github.com/jmettraux/rufus-scheduler/issues/230))
1470
1470
 
1471
- Rails set its timezone under `config/application.rb`.
1471
+ Rails sets its timezone under `config/application.rb`.
1472
1472
 
1473
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
1474
 
1475
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).
1476
1476
 
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 "中国标准时间").
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 "中国标准时间" nor "Eastern Standard Time" which, for instance, points to a time zone in America and to another one in Australia...).
1478
1478
 
1479
- If the error persists, try to add the `tzinfo-data` to your Gemfile, as in:
1479
+ If the error persists (and especially on Windows), try to add the `tzinfo-data` to your Gemfile, as in:
1480
1480
  ```ruby
1481
1481
  gem 'tzinfo-data'
1482
1482
  ```
1483
+ or by manually requiring it before requiring rufus-scheduler (if you don't use Bundler):
1484
+ ```ruby
1485
+ require 'tzinfo/data'
1486
+ require 'rufus-scheduler'
1487
+ ```
1483
1488
 
1484
1489
 
1485
1490
  ## so Rails?
@@ -39,7 +39,7 @@ module Rufus
39
39
  require 'rufus/scheduler/job_array'
40
40
  require 'rufus/scheduler/locks'
41
41
 
42
- VERSION = '3.3.3'
42
+ VERSION = '3.3.4'
43
43
 
44
44
  #
45
45
  # A common error class for rufus-scheduler
@@ -41,7 +41,10 @@ class Rufus::Scheduler
41
41
  fail ArgumentError.new(
42
42
  "cannot determine timezone from #{zone.inspect}" +
43
43
  " (etz:#{ENV['TZ'].inspect},tnz:#{Time.now.zone.inspect}," +
44
- "tzid:#{defined?(TZInfo::Data).inspect})"
44
+ "tzid:#{defined?(TZInfo::Data).inspect})\n" +
45
+ "Try setting `ENV['TZ'] = 'Continent/City'` in your script " +
46
+ "(see https://en.wikipedia.org/wiki/List_of_tz_database_time_zones)" +
47
+ (defined?(TZInfo::Data) ? '' : " and adding 'tzinfo-data' to your gems")
45
48
  ) unless @zone
46
49
 
47
50
  @time = nil # cache for #to_time result
@@ -0,0 +1,89 @@
1
+
2
+ I would take a different approach, one with a single schedule:
3
+
4
+ ```ruby
5
+ # config/initializers/scheduler.rb
6
+
7
+ require 'rufus-scheduler'
8
+
9
+ Rufus::Scheduler.singleton.cron('* * * * *') do
10
+ # every minute
11
+
12
+ HarvestPlan.trigger_if_necessary
13
+ end
14
+ ```
15
+
16
+ ```ruby
17
+ # app/models/harvest_plan.rb
18
+
19
+ class HarvestPlan < ApplicationRecord
20
+
21
+ def self.trigger_if_necessary
22
+
23
+ now = Time.now
24
+
25
+ HarvestPlan.where(start_date < now && repetitions > 0) do |plan|
26
+ # warning pseudo active record code !
27
+
28
+ elapsed = now - plan.last_time / 3600
29
+ next if elapsed < @harveset_plan.hours_between
30
+ # that elapsed check could even be done in the `where` above
31
+
32
+ # clear to trigger
33
+
34
+ plan.trigger
35
+ end
36
+ end
37
+
38
+ def trigger
39
+
40
+ self.repetitions -= 1
41
+ self.last_time = Time.now
42
+ self.save
43
+
44
+ CreateHarvestFromPlanJob.perform_later(self)
45
+ # that's ugly, when do not want to perform_later, we want to perform now!
46
+ end
47
+ end
48
+ ```
49
+
50
+ ```ruby
51
+ # in the controller...
52
+
53
+ def create
54
+
55
+ @harvest_plan = HarvestPlan.new(resource_params)
56
+ @harvest_plan.start_date = Time.parse(resource_params[:start_date])
57
+
58
+ return unless @harvest_plan.save
59
+
60
+ ApplicationController.new.insert_in_messages_list(
61
+ session, :success, 'Harvest plan created')
62
+
63
+ redirect_to farms_path
64
+ end
65
+ ```
66
+
67
+
68
+ You could even avoid using rufus-scheduler:
69
+
70
+ ```ruby
71
+ # config/initializers/scheduler.rb
72
+
73
+ Thread.new do
74
+ loop do
75
+ begin
76
+ sleep 59
77
+ HarvestPlan.trigger_if_necessary
78
+ rescue => err
79
+ Rails.logger.warn "#{err.object_id} - problem with HarvestPlan triggering... " + err.inspect
80
+ err.backtrace.each do |line|
81
+ Rails.logger.warn "#{err.object_id} - #{line}"
82
+ end
83
+ end
84
+ end
85
+ end
86
+ ```
87
+
88
+ Best regards.
89
+
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.3.3
4
+ version: 3.3.4
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-29 00:00:00.000000000 Z
11
+ date: 2017-02-15 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: tzinfo
@@ -78,6 +78,7 @@ files:
78
78
  - n.txt
79
79
  - pics.txt
80
80
  - rufus-scheduler.gemspec
81
+ - sofia.md
81
82
  homepage: http://github.com/jmettraux/rufus-scheduler
82
83
  licenses:
83
84
  - MIT
@@ -98,7 +99,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
98
99
  version: '0'
99
100
  requirements: []
100
101
  rubyforge_project: rufus
101
- rubygems_version: 2.4.5.1
102
+ rubygems_version: 2.4.5.2
102
103
  signing_key:
103
104
  specification_version: 4
104
105
  summary: job scheduler for Ruby (at, cron, in and every jobs)