./lib/schedulero.rb in schedulero-0.2.3 vs ./lib/schedulero.rb in schedulero-0.2.4
- old
+ new
@@ -10,48 +10,55 @@
class Schedulero
include Schedulero::Utils
attr_reader :tasks, :logger
- def initialize state_file: nil, log_file: true
- init_log log_file
- init_state state_file
-
+ def initialize state_file: nil, log_file: true, silent: false
+ @silent = silent
@tasks = {}
@running = {}
@count = 0
+
+ init_log log_file
+ init_state state_file
+
end
def init_state state_file
# state file
state_file ||= "./tmp/schedulero.json"
- puts 'State file: %s' % state_file
+ show 'State file: %s' % state_file
@state_file = Pathname.new state_file
@state_file.write '{}' unless @state_file.exist?
end
def init_log log_file
# log file
- log_file = case log_file
+ @log_file = case log_file
when String
log_file
when false
nil
else
- "./log/schedulero.log'"
+ "./log/schedulero.log"
end
- puts 'Log file : %s' % log_file
+ show 'Log file : %s' % @log_file
- @logger = Logger.new log_file
+ @logger = Logger.new @log_file
@logger.formatter = proc do |severity, datetime, progname, msg|
severity = severity == 'INFO' ? '' : "(#{severity}) "
"[#{datetime.strftime('%Y-%m-%d %H:%M:%S')}]: #{severity}#{msg}\n"
end
end
+ def show text
+ return if @silent
+ puts 'Schedulero: %s' % text
+ end
+
# add task
def every name, seconds, proc=nil, &block
proc ||= block
@tasks[name] = { interval: seconds , func: proc, name: name }
end
@@ -63,11 +70,11 @@
end
def run_forever interval: 3
Thread.new do
loop do
- puts 'looping ...'
+ show 'looping ...'
run
sleep interval
end
end
end
@@ -80,11 +87,11 @@
state['_last_run'] ||= Time.now.to_i
diff = Time.now.to_i - state['_last_run']
# if another process is controlling state, exit
if state['_pid'] != Process.pid && diff < 10
- puts "Another process [#{state['_pid']}] is controlling state before #{diff} sec, skipping. I am (#{Process.pid})".red
+ show "Another process [#{state['_pid']}] is controlling state before #{diff} sec, skipping. I am (#{Process.pid})".red
return
end
for name, block in @tasks
state[name] ||= 0
@@ -106,11 +113,11 @@
if diff < 0
state[name] = now
safe_run block
else
- puts 'skipping "%s" for %s' % [name, humanize_seconds(diff)]
+ show 'skipping "%s" for %s' % [name, humanize_seconds(diff)]
end
end
end
state['_last_run'] = Time.now.to_i
@@ -121,11 +128,11 @@
# run in rescue mode, kill if still running
def safe_run block
name = block[:name]
- puts 'Running "%s"' % name.green
+ show 'Running "%s"' % name.green
@logger.info 'Run: %s' % name
if block[:running]
log_errror "Task [#{block[:name]}] is still running, killing..."
Thread.kill(block[:running])
@@ -151,10 +158,10 @@
'%s: %s (%s)' % [name, $!.message, $!.class]
else
name
end
- puts msg.red
+ show msg.red
@logger.error(msg)
end
end