2018-01-06

wheneverコードリーディング

でcrontabのコマンドを使って設定しています。出力したcron設定を標準入力としてIO.popenのcrontabプロセスに食わせています module Whenever class CommandLine ... def write_crontab(contents) command = [@options[:crontab_command]] command "-u #{@options[:user]}" if @options[:user] # Solaris/SmartOS cron does not support the - option to read from stdin. command "-" unless OS.solaris?

  IO.popen(command.join(' '), 'r+') do |crontab|
    crontab.write(contents)
    crontab.close_write
  end

  success = $?.exitstatus.zero?

  if success
    action = 'written' if @options[:write]
    action = 'updated' if @options[:update]
    puts "[write] crontab file #{action}"
    exit(0)
  else
    warn "[fail] Couldn't write crontab; try running `whenever' with no options to ensure your schedule file is valid."
    exit(1)
  end
end]>
このエントリーをはてなブックマークに追加