crocodile 2.0 → 2.1.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: d2627bc70065abf622c9cb773882267676bd6fc8
4
- data.tar.gz: 1b919c277bd260a7b972223111b07cc08e9d2536
3
+ metadata.gz: cd541c42fadfc1ce295680a377a16f018da2db52
4
+ data.tar.gz: 41334fd456c4dd3c12460b41a65cb17451ac2832
5
5
  SHA512:
6
- metadata.gz: 6c7d0d8bf450e0f593004f9d10495d1a327b4a2a613b7f1283e0ace971e552ca252537aca06884774d8233d602fd95501b89771cc6d227326b2c7a6a20019c59
7
- data.tar.gz: 753a061b3df20c39b1ff53db8c9e6dfbb77cc8dab37eefd9fb54792a8a2a4d75c81102ca59106474f366adfb6fdef24c931975c8ecaba28708f18fb9a8699ff7
6
+ metadata.gz: 5531125dce13ed3413590e28e667ec7af4565c1ed3dfa0c3c02cc7c0520d6f2913c78d7435b00dccbbaba961350584076b3c780e6e970f3fcb798579d928d15c
7
+ data.tar.gz: 6768976d6532d98e9ed9f5519eb2f074b21b0af78a0031d8c7b1d8b1526283502fe99fcbe8bf176d8cb9542fc7c972afca31c31c776ca7781be7577c14bb2087
data/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  ##Crocodile
2
2
 
3
- Crocodile is a gem for running periodic [background] jobs written in Ruby.
3
+ Crocodile is a [gem](https://rubygems.org/gems/crocodile) for running periodic [background] jobs written in Ruby.
4
4
  Crocodile provides a worker binary that's in charge of running the jobs you define, it also provides a base class for those jobs.
5
5
 
6
6
  ###Install
@@ -117,6 +117,21 @@ If you need just schedule the job instead to run it immediately, you do it throu
117
117
  crocodile dummy schedule
118
118
  ```
119
119
 
120
+ By default job will be scheduled to start after `interval`.
121
+
122
+ If you want to schedule your job to start at certain hour you can redefine `start_at` method with format `hh:mm`:
123
+
124
+ ```
125
+ class DummyJob < CrocodileJob
126
+ def self.start_at
127
+ "05:00"
128
+ end
129
+ end
130
+
131
+ crocodile dummy schedule
132
+ ```
133
+
134
+ When `start_at` is defined your job will start working at `start_at` and will execute each `interval`.
120
135
 
121
136
  So, that's pretty much it. We hope you enjoy it.
122
137
 
@@ -2,7 +2,7 @@
2
2
 
3
3
  Gem::Specification.new do |s|
4
4
  s.name = "crocodile"
5
- s.version = "2.0"
5
+ s.version = "2.1.0"
6
6
  s.summary = "Periodic Ruby jobs runner"
7
7
  s.license = "MIT"
8
8
  s.description = "A simple worker to run Ruby jobs periodically"
@@ -20,4 +20,8 @@ class CrocodileJob
20
20
  def self.logger
21
21
  @@logger ||= Logger.new(STDOUT)
22
22
  end
23
+
24
+ def self.start_at
25
+ nil
26
+ end
23
27
  end
@@ -8,16 +8,34 @@ class CrocodileProcess
8
8
  end
9
9
 
10
10
  def start
11
- schedule(launch_immediately=true)
11
+ schedule(true)
12
12
  end
13
13
 
14
- def schedule(launch_immediately=false)
14
+ def schedule(launch_immediately = false)
15
15
  require @job_path
16
16
  job_class = constantize(@name)
17
17
 
18
+ run_enabled = true
19
+
18
20
  Signal.trap("INT") { EventMachine.stop }
19
21
  Signal.trap("TERM") { EventMachine.stop }
20
22
 
23
+ if !launch_immediately && !job_class.start_at.nil?
24
+ run_enabled = false
25
+ EventMachine.run do
26
+ timer = EventMachine::PeriodicTimer.new(5) do
27
+ if Time.now.to_s.match(/\s#{job_class.start_at}:\d{2}/)
28
+ job_class.logger.info "Starting scheduled job (#{job_class.start_at})"
29
+ launch_immediately = true
30
+ run_enabled = true
31
+
32
+ timer.cancel
33
+ EventMachine.stop
34
+ end
35
+ end
36
+ end
37
+ end
38
+
21
39
  EventMachine.run do
22
40
  EventMachine.next_tick do
23
41
  job_class.logger.info job_class.message
@@ -33,7 +51,7 @@ class CrocodileProcess
33
51
  EventMachine.stop
34
52
  end
35
53
  end
36
- end
54
+ end if run_enabled
37
55
  end
38
56
 
39
57
  def stop
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: crocodile
3
3
  version: !ruby/object:Gem::Version
4
- version: '2.0'
4
+ version: 2.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Lautaro Orazi
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2015-03-17 00:00:00.000000000 Z
12
+ date: 2015-07-30 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: eventmachine