./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