que-scheduler 0.1.0 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 34c186335cf0386ab154de58d4ca489dbb186ce5
4
- data.tar.gz: 8dea367b4b83245873e6657ec4191fa778d4698b
3
+ metadata.gz: a8bac5ee368ed1c96b3564c96c4e3622b9ab2277
4
+ data.tar.gz: ddef04872cbf3640dcb498c80b59eb3e6093e766
5
5
  SHA512:
6
- metadata.gz: e5fa939bcc60786ac68de29c384165a7cdb21a054095e185f748bbd2732e24fd70d2f9ae49ee1b20251034600268567610df7e148867ec5e47fce84dbc69efd0
7
- data.tar.gz: bc60257fed3c568e362a030277f32a033a36cbdb1a4cf7b1ab3b1e7307d49935d0d25615b0ad215b4edf4633805e3b65e7a5d78d1118dcc48fdf7ddeffa41e46
6
+ metadata.gz: 7f0aa8fde4d885e5f4cd2dc12798ccf304069e7f30775242ee4c70e3f16feb649f0a36e32be5146033bc66477605717da193ae3335217e292492908f3fc7b68d
7
+ data.tar.gz: ea10b8a5de1a8008ce79c1ce1da40decf618b9f8e2ec13f0379b93c54ac7d95e1ae23df2095fbed1fd44bad7f357304cb3664cfef7749adc3add9f5dc5bf57d1
data/README.md CHANGED
@@ -2,7 +2,7 @@ que-scheduler
2
2
  ================
3
3
 
4
4
  [![Build Status](https://travis-ci.org/resque/que-scheduler.svg?branch=master)](https://travis-ci.org/hlascelles/que-scheduler)
5
- [![Code Climate](https://codeclimate.com/github/hlascelles/sque-scheduler/badges/gpa.svg)](https://codeclimate.com/github/hlascelles/que-scheduler)
5
+ [![Code Climate Maintainability](https://api.codeclimate.com/v1/badges/710d2fc5202f95d76e8a/maintainability)](https://codeclimate.com/github/hlascelles/que-scheduler/maintainability)
6
6
 
7
7
  ### Description
8
8
 
@@ -12,28 +12,21 @@ needs to be run, enqueueing those jobs, then enqueueing itself to check again la
12
12
 
13
13
  ### Installation
14
14
 
15
- To install, add the gem to your Gemfile:
15
+ 1. To install, add the gem to your Gemfile:
16
+ ```ruby
17
+ gem 'que-scheduler'
18
+ ```
19
+ 1. Specify a schedule config in a yml file (see below). The default location that que-scheduler will
20
+ look for it is `config/que_schedule.yml`. They are essentially the same as resque-scheduler config
21
+ files, but with additional features.
16
22
 
17
- ```ruby
18
- gem 'que-scheduler'
19
- ```
20
-
21
- You will need to specify a schedule config (see below). The default location that que-scheduler will
22
- look for it is `config/que_schedule.yml`
23
-
24
- Finally, add a migration to start the job scheduler.
25
-
26
- ```ruby
27
- Que::Scheduler::SchedulerJob.enqueue
28
- ```
29
-
30
- ### Environment Variables
31
-
32
- You can configure some aspects of the gem with environment variables.
33
-
34
- * `QUE_SCHEDULER_CONFIG_LOCATION` - The location of the schedule configuration (default config/que_schedule.yml)
23
+ 1. Add a migration to start the job scheduler.
35
24
 
36
- #### Schedule configuration
25
+ ```ruby
26
+ Que::Scheduler::SchedulerJob.enqueue
27
+ ```
28
+
29
+ ### Schedule configuration
37
30
 
38
31
  The schedule file is a list of que job classes with arguments and a schedule frequency (in crontab
39
32
  syntax). The format is a superset of the resque-scheduler config format, so it they can be used
@@ -55,7 +48,7 @@ queue_documents_for_indexing:
55
48
  # If you want to have a different job name and class name, provide the 'class' option
56
49
  class: "QueueDocuments"
57
50
  queue: high
58
- args:
51
+ args: ['reports', 'expenses']
59
52
 
60
53
  clear_leaderboards_contributors:
61
54
  cron: "30 6 * * 1"
@@ -66,24 +59,33 @@ clear_leaderboards_contributors:
66
59
  DailyBatchReport:
67
60
  cron: "0 3 * * *"
68
61
  # This job will be run every day, and if workers are offline for several days, then the backlog
69
- # will all be scheduled when they are restored, each with that events timestamp.
62
+ # will all be scheduled when they are restored, each with that events timestamp as the first arg.
70
63
  unmissable: true
71
64
  ```
72
65
 
66
+ ### Environment Variables
67
+
68
+ You can configure some aspects of the gem with environment variables.
69
+
70
+ * `QUE_SCHEDULER_CONFIG_LOCATION` - The location of the schedule configuration (default `config/que_schedule.yml`)
71
+
73
72
  ### Redundancy and Fail-Over
74
73
 
75
74
  Because of the way que-scheduler works, it requires no additional processes. It is, itself, a Que job.
76
- As long as there are Que workers functioning, then jobs will continue to be scheduled correctly.
75
+ As long as there are Que workers functioning, then jobs will continue to be scheduled correctly. There
76
+ are no HA concerns to worry about and no namespace collisions between different databases.
77
+
78
+ Additionally, like Que, when your database is backed up, your scheduling state is stored too.
77
79
 
78
80
  ### How it works
79
81
 
80
- que-scheduler is a job that reads a config file, then schedules itself endlessly on a delay, enqueueing
81
- any jobs it determines that need to be run. The flow is as follows
82
+ que-scheduler is a job that reads a config file, enqueues any jobs it determines that need to be run,
83
+ then reschedules itself. The flow is as follows:
82
84
 
83
- 1. The job for the very first time.
84
- 1. que-scheduler loads the config file, and notices it is new. It will not schedule any other jobs, except itself.
85
- 1. Some time later it runs again. It knows what jobs it should be monitoring, and notices that some have are due. It enqueues those jobs and itself.
86
- 1. After a deploy that changes the config, it notices a new job to monitor, and one to forget.
85
+ 1. The que-scheduler job runs for the very first time.
86
+ 1. que-scheduler loads the schedule config file. It will not schedule any other jobs, except itself, as it has never run before.
87
+ 1. Some time later it runs again. It knows what jobs it should be monitoring, and notices that some have are due. It enqueues those jobs and then itself. Repeat.
88
+ 1. After a deploy that changes the config, the job notices any new jobs to schedule, and knows which ones to forget. It does not need to be re-enqueued or restarted.
87
89
 
88
90
  ### Thanks
89
91
 
@@ -55,7 +55,7 @@ module Que
55
55
  def next_run_time(cron, from, to)
56
56
  fugit_cron = Fugit::Cron.parse(cron)
57
57
  next_time = fugit_cron.next_time(from)
58
- next_run = next_time.to_local_time
58
+ next_run = next_time.to_local_time.in_time_zone(next_time.zone)
59
59
  next_run <= to ? next_run : nil
60
60
  end
61
61
  end
@@ -10,7 +10,7 @@ module Que
10
10
 
11
11
  def run(last_time = nil, known_jobs = [])
12
12
  ::ActiveRecord::Base.transaction do
13
- last_time = last_time.nil? ? Time.now : Time.parse(last_time)
13
+ last_time = last_time.nil? ? Time.now : Time.zone.parse(last_time)
14
14
  as_time = Time.now
15
15
 
16
16
  result =
@@ -1,5 +1,5 @@
1
1
  module Que
2
2
  module Scheduler
3
- VERSION = '0.1.0'.freeze
3
+ VERSION = '0.2.0'.freeze
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: que-scheduler
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Harry Lascelles
@@ -164,6 +164,20 @@ dependencies:
164
164
  - - "~>"
165
165
  - !ruby/object:Gem::Version
166
166
  version: '0.7'
167
+ - !ruby/object:Gem::Dependency
168
+ name: zonebie
169
+ requirement: !ruby/object:Gem::Requirement
170
+ requirements:
171
+ - - "~>"
172
+ - !ruby/object:Gem::Version
173
+ version: '0.6'
174
+ type: :development
175
+ prerelease: false
176
+ version_requirements: !ruby/object:Gem::Requirement
177
+ requirements:
178
+ - - "~>"
179
+ - !ruby/object:Gem::Version
180
+ version: '0.6'
167
181
  description: A lightweight cron scheduler for the async job worker Que
168
182
  email:
169
183
  - harry@harrylascelles.com