Sha256: 11ba1030d4461f99869ee0345d995e801e531721dd385923e6e454868e54222f
Contents?: true
Size: 1.36 KB
Versions: 2
Compression:
Stored size: 1.36 KB
Contents
module S3log class Cron def initialize(configfile) @configfile = configfile @config = YAML::load_file(configfile) @path = File.dirname(File.expand_path(configfile)) @jobname = @config['jobname'] @schedule = @config['schedule'] @logdir = @config['logdir'] FileUtils.mkdir(@logdir) unless Dir.exists? @logdir S3log::Log.set_logger(File.join(@logdir, 's3log.log'), @config['loglevel']) end def update line = "#{@schedule} bash -l -c 'cd #{@path} && bundle exec s3log download -c #{@configfile} >> /dev/null 2>&1' # s3log_#{@jobname}\n" tmp_cron_file = Tempfile.open('tmp_cron') included = false existing.each_line do |l| if l =~ Regexp.new("# s3log_#{@jobname}") tmp_cron_file << line included = true else tmp_cron_file << l end end tmp_cron_file << "# S3log job #{@jobname}\n#{line}" unless included tmp_cron_file.fsync if system("crontab #{tmp_cron_file.path}") S3log::Log.info "#{@jobname} [update] crontab updated." else S3log::Log.warn "#{@jobname} [fail] Couldn't write crontab." tmp_cron_file.close! exit(1) end end def existing existing = %x(crontab -l 2> /dev/null) if $?.exitstatus.zero? existing else "" end end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
s3log-0.0.5 | lib/s3log/cron.rb |
s3log-0.0.4 | lib/s3log/cron.rb |