schedulero 0.2.3 → 0.2.4
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.version +1 -1
- data/lib/schedulero.rb +21 -14
- data/lib/utils.rb +4 -2
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 6d6f7879580da96f7997b9370e2fbb89eb00953cf95d3a7ad8f780424441270a
|
4
|
+
data.tar.gz: 22b56bd19dacf0bc0555c9168d07e807bac3c44694038e561d701e9e23fc19bb
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8abbd6fe761c7a6e9ea3786286e1cc86eab651dd57accfaa9bf0910c7d17a3a55d748553e841aff1141a83f8d7c6f83b40fc86e4f4c66f5deae46027d5bf97a4
|
7
|
+
data.tar.gz: 92abd0841e476cc83076dd833ab547392f9fe4e109842723451f3e702cf0d2a28e593dcaf0f96b4e820c60e7a8a048e70b58ebab0b1ed37bdddd8fc73045e128
|
data/.version
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.2.
|
1
|
+
0.2.4
|
data/lib/schedulero.rb
CHANGED
@@ -12,19 +12,21 @@ class Schedulero
|
|
12
12
|
|
13
13
|
attr_reader :tasks, :logger
|
14
14
|
|
15
|
-
def initialize state_file: nil, log_file: true
|
16
|
-
|
17
|
-
init_state state_file
|
18
|
-
|
15
|
+
def initialize state_file: nil, log_file: true, silent: false
|
16
|
+
@silent = silent
|
19
17
|
@tasks = {}
|
20
18
|
@running = {}
|
21
19
|
@count = 0
|
20
|
+
|
21
|
+
init_log log_file
|
22
|
+
init_state state_file
|
23
|
+
|
22
24
|
end
|
23
25
|
|
24
26
|
def init_state state_file
|
25
27
|
# state file
|
26
28
|
state_file ||= "./tmp/schedulero.json"
|
27
|
-
|
29
|
+
show 'State file: %s' % state_file
|
28
30
|
|
29
31
|
@state_file = Pathname.new state_file
|
30
32
|
@state_file.write '{}' unless @state_file.exist?
|
@@ -32,24 +34,29 @@ class Schedulero
|
|
32
34
|
|
33
35
|
def init_log log_file
|
34
36
|
# log file
|
35
|
-
log_file = case log_file
|
37
|
+
@log_file = case log_file
|
36
38
|
when String
|
37
39
|
log_file
|
38
40
|
when false
|
39
41
|
nil
|
40
42
|
else
|
41
|
-
"./log/schedulero.log
|
43
|
+
"./log/schedulero.log"
|
42
44
|
end
|
43
45
|
|
44
|
-
|
46
|
+
show 'Log file : %s' % @log_file
|
45
47
|
|
46
|
-
@logger = Logger.new log_file
|
48
|
+
@logger = Logger.new @log_file
|
47
49
|
@logger.formatter = proc do |severity, datetime, progname, msg|
|
48
50
|
severity = severity == 'INFO' ? '' : "(#{severity}) "
|
49
51
|
"[#{datetime.strftime('%Y-%m-%d %H:%M:%S')}]: #{severity}#{msg}\n"
|
50
52
|
end
|
51
53
|
end
|
52
54
|
|
55
|
+
def show text
|
56
|
+
return if @silent
|
57
|
+
puts 'Schedulero: %s' % text
|
58
|
+
end
|
59
|
+
|
53
60
|
# add task
|
54
61
|
def every name, seconds, proc=nil, &block
|
55
62
|
proc ||= block
|
@@ -65,7 +72,7 @@ class Schedulero
|
|
65
72
|
def run_forever interval: 3
|
66
73
|
Thread.new do
|
67
74
|
loop do
|
68
|
-
|
75
|
+
show 'looping ...'
|
69
76
|
run
|
70
77
|
sleep interval
|
71
78
|
end
|
@@ -82,7 +89,7 @@ class Schedulero
|
|
82
89
|
|
83
90
|
# if another process is controlling state, exit
|
84
91
|
if state['_pid'] != Process.pid && diff < 10
|
85
|
-
|
92
|
+
show "Another process [#{state['_pid']}] is controlling state before #{diff} sec, skipping. I am (#{Process.pid})".red
|
86
93
|
return
|
87
94
|
end
|
88
95
|
|
@@ -108,7 +115,7 @@ class Schedulero
|
|
108
115
|
state[name] = now
|
109
116
|
safe_run block
|
110
117
|
else
|
111
|
-
|
118
|
+
show 'skipping "%s" for %s' % [name, humanize_seconds(diff)]
|
112
119
|
end
|
113
120
|
end
|
114
121
|
end
|
@@ -123,7 +130,7 @@ class Schedulero
|
|
123
130
|
def safe_run block
|
124
131
|
name = block[:name]
|
125
132
|
|
126
|
-
|
133
|
+
show 'Running "%s"' % name.green
|
127
134
|
@logger.info 'Run: %s' % name
|
128
135
|
|
129
136
|
if block[:running]
|
@@ -153,7 +160,7 @@ class Schedulero
|
|
153
160
|
name
|
154
161
|
end
|
155
162
|
|
156
|
-
|
163
|
+
show msg.red
|
157
164
|
|
158
165
|
@logger.error(msg)
|
159
166
|
end
|
data/lib/utils.rb
CHANGED
@@ -17,12 +17,14 @@ class Schedulero
|
|
17
17
|
data = ['Tasks:']
|
18
18
|
|
19
19
|
for name, task in tasks
|
20
|
-
|
20
|
+
at = task[:at] ? "at #{task[:at]}" : "every #{humanize_seconds(task[:interval])}"
|
21
|
+
|
22
|
+
data.push '- %s, %s' % [name, at]
|
21
23
|
end
|
22
24
|
|
23
25
|
data.push ['','###', '']
|
24
26
|
|
25
|
-
data.push `tail -#{lines}
|
27
|
+
data.push `tail -#{lines} #{@log_file}`.split($/).reverse if @log_file
|
26
28
|
|
27
29
|
data.join($/)
|
28
30
|
end
|