schedulero 0.2.3 → 0.2.4
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 +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
|