class Whenever::Job

Attributes

at[R]
mailto[R]
roles[R]

Public Class Methods

new(options = {}) click to toggle source
# File lib/whenever/job.rb, line 7
def initialize(options = {})
  @options = options
  @at                               = options.delete(:at)
  @template                         = options.delete(:template)
  @mailto                           = options.fetch(:mailto, :default_mailto)
  @job_template                     = options.delete(:job_template) || ":job"
  @roles                            = Array(options.delete(:roles))
  @options[:output]                 = options.has_key?(:output) ? Whenever::Output::Redirection.new(options[:output]).to_s : ''
  @options[:environment_variable] ||= "RAILS_ENV"
  @options[:environment]          ||= :production
  @options[:path]                   = Shellwords.shellescape(@options[:path] || Whenever.path)
end

Public Instance Methods

has_role?(role) click to toggle source
# File lib/whenever/job.rb, line 26
def has_role?(role)
  roles.empty? || roles.include?(role)
end
output() click to toggle source
# File lib/whenever/job.rb, line 20
def output
  job = process_template(@template, @options)
  out = process_template(@job_template, @options.merge(:job => job))
  out.gsub(/%/, '\%')
end

Protected Instance Methods

escape_double_quotes(str) click to toggle source
# File lib/whenever/job.rb, line 51
def escape_double_quotes(str)
  str.gsub(/"/) { '\"' }
end
escape_single_quotes(str) click to toggle source
# File lib/whenever/job.rb, line 47
def escape_single_quotes(str)
  str.gsub(/'/) { "'\\''" }
end
process_template(template, options) click to toggle source
# File lib/whenever/job.rb, line 32
def process_template(template, options)
  template.gsub(/:\w+/) do |key|
    before_and_after = [$`[-1..-1], $'[0..0]]
    option = options[key.sub(':', '').to_sym] || key

    if before_and_after.all? { |c| c == "'" }
      escape_single_quotes(option)
    elsif before_and_after.all? { |c| c == '"' }
      escape_double_quotes(option)
    else
      option
    end
  end.gsub(/\s+/m, " ").strip
end