# Resque tasks
require 'resque/tasks'
require 'resque/scheduler/tasks'
require 'resque'
require 'resque-scheduler'

task :scheduler => :environment do

  # If you want to be able to dynamically change the schedule,
  # uncomment this line.  A dynamic schedule can be updated via the
  # Resque::Scheduler.set_schedule (and remove_schedule) methods.
  # When dynamic is set to true, the scheduler process looks for
  # schedule changes and applies them on the fly.
  # Note: This feature is only available in >=2.0.0.
  #Resque::Scheduler.dynamic = true

  # The schedule doesn't need to be stored in a YAML, it just needs to
  # be a hash.  YAML is usually the easiest.
  config = YAML.load_file(File.join(File.dirname(__FILE__), '../..', 'config/scheduler.yml'))

  if File.exist? File.join(File.dirname(__FILE__), '../..', 'config/scheduler_override.yml')
    puts "scheduler_override file found. loading..."
    override = YAML.load_file(File.join(File.dirname(__FILE__), '../..', 'config/scheduler_override.yml'))
    if override # override will be false if file is empty
      config.merge!(override)
    else
      puts "schedule_override is empty... skipping..."
    end

  end

  Resque.schedule = config

  # If your schedule already has +queue+ set for each job, you don't
  # need to require your jobs.  This can be an advantage since it's
  # less code that resque-scheduler needs to know about. But in a small
  # project, it's usually easier to just include you job classes here.
  # So, something like this:
  #require 'jobs'

  Rake::Task['resque:scheduler'].invoke
end
