dynarex_cron 0.1.8 → 0.2.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: 318c027711a6c2c28f955a92994386c853e37448
4
- data.tar.gz: 2ba17d030d4ef26264b6322ab5bacf1a49d066ab
3
+ metadata.gz: 076ae88a768c151597d0bdda36be16d55c697ed5
4
+ data.tar.gz: 18d8493b651c6f6c09a0d58b9b3bf29efc7efa9f
5
5
  SHA512:
6
- metadata.gz: 720d9850041e60b2bf4e57de3a721f241ada3ba3b6656631966b018aabe944cba3feb7af2b81243aea864d2a218f1a9070bbf786b2d13bb2379d2fcba31c6894
7
- data.tar.gz: 5573ff3d3706e04022c7bf7eda27ea110516a8c2cb4a0f3e64039591a9db903164a12dab95cbf660c4ff3ec16f4fd48dff2224af3b2c08c1e728598cf69a1057
6
+ metadata.gz: 947ad1e25b48eb6036116938f696e0a3e17a1f5c1c6f4fd29bcda8b693c0782b41ec221fabf97449f1494c389deda25e0e8b96043ca90198c00bb3d53f5100f7
7
+ data.tar.gz: 280e496fc0c6da71891efe6574cf2284b7454f4cbd6a98532a8a40fc73b998b50192f82dfba0ceff7b5ff7696387a54768fe4118b8866da33b776e01ae847a03
checksums.yaml.gz.sig CHANGED
Binary file
data.tar.gz.sig CHANGED
Binary file
data/lib/dynarex_cron.rb CHANGED
@@ -6,35 +6,86 @@ require 'dynarex'
6
6
  require 'chronic_cron'
7
7
  require 'simplepubsub'
8
8
  require 'rscript'
9
+ require 'dynarex-events'
9
10
 
10
11
  DF = "%Y-%m-%d %H:%M"
11
12
 
12
13
  class DynarexCron
13
14
 
14
- def initialize(dynarex_file, sps_address=nil)
15
- dynarex = Dynarex.new dynarex_file
16
- @cron_entries = dynarex.to_h
17
- @cron_entries.each {|h| h[:cron] = ChronicCron.new(h[:expression]) }
18
- @sps_address = sps_address
15
+ def initialize(dynarex_file=nil, options={})
16
+
17
+ opt = {sps_address: nil, drb_server: false}.merge options
18
+
19
+ @cron_entries, @cron_events = [], []
20
+
21
+ @dynarex_file = dynarex_file
22
+ load_entries() if @dynarex_file
23
+ load_events() if @include_url
24
+
25
+ @sps_address = opt[:sps_address]
26
+
27
+ if opt[:drb_server] == true then
28
+
29
+ Thread.new {
30
+
31
+ # start up the DRb service
32
+ DRb.start_service 'druby://:57000', self
33
+
34
+ # wait for the DRb service to finish before exiting
35
+ DRb.thread.join
36
+ }
37
+ end
19
38
  end
20
39
 
21
40
  def start
41
+ @running = true
22
42
  puts '[' + Time.now.strftime(DF) + '] DynarexCron started'
43
+
44
+ while @running == true
23
45
 
24
- while true
25
- #puts Time.now.inspect
26
- @cron_entries.each do |h|
27
- if h[:cron].to_time.strftime(DF) == Time.now.strftime(DF) then
28
- Thread.new { run(h[:job]) }
29
- h[:cron].next # advances the time
30
- end
31
- end
46
+ iterate @cron_entries
47
+ iterate @cron_events
32
48
  sleep 60 # wait for 60 seconds
33
49
  end
34
50
  end
51
+
52
+ def stop()
53
+ @running = false
54
+ end
55
+
56
+ def load_entries()
57
+
58
+ dynarex = Dynarex.new @dynarex_file
59
+
60
+ @include_url = dynarex.summary[:include]
61
+ @cron_entries = dynarex.to_h
62
+ @cron_entries.each {|h| h[:cron] = ChronicCron.new(h[:expression]) }
63
+ end
64
+
65
+ alias refresh_entries load_entries
66
+
67
+ def load_events()
68
+
69
+ de = DynarexEvents.new(@include_url)
70
+ @cron_events = de.to_a
71
+ end
72
+
73
+ alias refresh_events load_events
35
74
 
36
75
  private
37
76
 
77
+ def iterate(cron_entries)
78
+
79
+ cron_entries.each do |h|
80
+
81
+ if h[:cron].to_time.strftime(DF) == Time.now.strftime(DF) then
82
+
83
+ Thread.new { run(h[:job]) }
84
+ h[:cron].next # advances the time
85
+ end
86
+ end
87
+ end
88
+
38
89
  def run(job)
39
90
 
40
91
  case job
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dynarex_cron
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.8
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - James Robertson
@@ -31,7 +31,7 @@ cert_chain:
31
31
  y6cNz+NnybgoQfG28NcwV1e/31NTJk5VqdKHKnTfPcp/y35T9YoElNn5cSs93qc5
32
32
  U5VVkvsVQudaZw==
33
33
  -----END CERTIFICATE-----
34
- date: 2013-08-02 00:00:00.000000000 Z
34
+ date: 2013-08-04 00:00:00.000000000 Z
35
35
  dependencies:
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: dynarex
@@ -89,6 +89,20 @@ dependencies:
89
89
  - - '>='
90
90
  - !ruby/object:Gem::Version
91
91
  version: '0'
92
+ - !ruby/object:Gem::Dependency
93
+ name: dynarex-events
94
+ requirement: !ruby/object:Gem::Requirement
95
+ requirements:
96
+ - - '>='
97
+ - !ruby/object:Gem::Version
98
+ version: '0'
99
+ type: :runtime
100
+ prerelease: false
101
+ version_requirements: !ruby/object:Gem::Requirement
102
+ requirements:
103
+ - - '>='
104
+ - !ruby/object:Gem::Version
105
+ version: '0'
92
106
  description:
93
107
  email: james@r0bertson.co.uk
94
108
  executables: []
metadata.gz.sig CHANGED
Binary file