2009-12-28 7 views
3

Я использую delayed_job (попробовал как tobi, так и collect_idea) на хостинге сайта site5.com, с пассажирским окружением. Мне удалось сделать работу. Однако, кажется, плагин игнорирует любые изменения в исходном коде класса задания после первого запуска. Я перезапустил сервер при каждом изменении (touch tmp/restart.txt), но он все равно игнорирует его.delayed_job - Выполняет не обновленный код?

Пример:

файл: lib/xx_job.rb

class XxJob 
    def perform 
    Rails.logger.info "XX START" 

    TempTest.delete_all 

    i = 0 
    10.times { 
     i+=1 
     TempTest.create(:name => "XXX") 
     sleep(1) 
    } 

    Rails.logger.info "XX END" 
    end 
end 

В простом контроллере я называю:

Delayed::Job.enqueue(XxJob.new) 

Выводы Я собрал:

  1. Если изменить xx_job. rb - xx_job 1.rb - ошибка контроллера
  2. Если изменить класс XxJob к классу XxJob1 - ошибка на контроллере
  3. Если удалить все содержимое выполнить метод - старый код старого код выполняются
  4. New .RB файла с классом и выполнять, епдиеие этот класс - отлично работает
  5. Если я что-то изменить в выполнения и снова запустить работу этого нового файла - старый код выполняется

Между каждым изменением я сделал рестарт сервера. Кажется, что Пассажир или что-то еще сохраняет кеш класса.

Как удалить этот кеш? Есть ли где-нибудь на сервере? (Я надеюсь, что у меня есть доступ к нему из общего хостинга)

Спасибо!

+0

Вы видели этот ответ? http://stackoverflow.com/questions/1609586/rails-delayedjob-want-to-load-newest-version-of-job-class –

ответ

2

В конце концов, я понял, что несколько работников бежали в фоновом режиме, каждый из них поймал работу и имел свой кеш. Я не знал, как убить их, поэтому я изменил имя таблицы несколько секунд. Это убило их :)

Тогда я использовал http://wiki.github.com/tobi/delayed_job/running-delayedworker-as-a-daemon как рабочий старт, и он отлично работает.

2

Если вы запустили замедленных рабочих работников, то вам необходимо перезапустить их, чтобы перезагрузить код. Кроме того, имейте в виду, что каждый рабочий загружает свой экземпляр рельсов.

Смежные вопросы