crocodile 2.0 → 2.1.0

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: 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