2017-01-20 16 views
1

У меня есть приложение Rails, которое использует Rufus Scheduler в сочетании с заданиями Delayed для выполнения фоновых заданий. Есть еще рабочие места, но одна у меня возникают проблемы с запланировано в контроллере, используя этот код:Почему Rufus планирует первое задание дважды?

def create 
    @harvest_plan = HarvestPlan.new(resource_params) 
    @harvest_plan.start_date = Time.parse(resource_params[:start_date]) 
    if @harvest_plan.save 
     ApplicationController.new.insert_in_messages_list(session, :success, 'Harvest plan created') 
     schedule_harvest 
     redirect_to farms_path 
    end 
    end 

    private 

    def schedule_harvest 
    Rufus::Scheduler.singleton.every "#{@harvest_plan.hours_between}h", 
     :times => @harvest_plan.repetitions, :first_at => @harvest_plan.start_date do 
     CreateHarvestFromPlanJob.perform_later 
    end 
    end 

Работа, как предполагается, планируется в соответствии с моделью плана сбора урожая, который указывает на то, сколько часов должно прошлое между заданиями, когда первый должен быть запланирован и сколько повторений должно произойти. Все работает отлично, за исключением первое задание, которое происходит в момент, заданный с помощью first_at, но по какой-то причине дважды назначается, отложенные задания затем выполняются дважды. Я попытался использовать опции взаимного доступа, блокировки и перекрытия, но ничего не изменил. После первой работы (запланированной дважды) все работает нормально. Следующие задания запланированы вовремя и только один раз. У меня только один отложенный работник

Почему это происходит?

Я бегу Rails 4.2.4, Ruby 2.2.2 и Rufus 3.3.2. Поскольку ошибка происходит как с пассажиром, так и с webrick, я предполагаю, что это не имеет ничего общего с проблемой.

+0

Какая версия Ruby, какая версия rufus-scheduler? – jmettraux

ответ