2016-03-09 3 views
0

Я хочу установить cron job, чтобы удалить скриншоты, которые старше двух минут, и задание cron для запуска каждые две минуты.Использовать каждый раз, когда gem настраивает работу cron

Содержание schedule.rb файла

every 2.minutes do 
    runner 'screenshot.delete_old', output: {error: "#{path}/log/error.log", standard: "#{path}/log/cron.log"} 
end 

Содержание модели Screenshot.rb файл

def self.delete_old 
     # @old_screenshots = Screenshot.where('Screenshot.created_at < ?', Time.now) 
     #@old_screenshots.delete_all 
     #@screenshot.delete_old 
     #Screenshot.delete 
     screenshot_ids = screenshot.find(:all, :conditions =>   ["created_at ", 2.minutes.ago]) 
     if screenshot_ids.size > 0 
      screenshot.destroy(screenshot_ids) 
      puts "#{screenshot_ids.size} screenshots have been deleted!" 
     end 
    end 

Я обновил файл кронтаб и побежал сервера рельсы Ожидая screeshots будут удалены. Но это не работает. Может ли кто-нибудь помочь мне в этом? Благодарю.

ответ

0

Классы в Ruby, должны иметь капитал первую букву, возможно, вы должны попробовать:

every 2.minutes do 
    runner 'Screenshot.delete_old', output: {error: "#{path}/log/error.log", standard: "#{path}/log/cron.log"} 
end 

и модель:

def self.delete_old 
    screenshot_ids = Screenshot.where('created_at < ?', 2.minutes.ago)) 
    if screenshot_ids.size > 0 
    Screenshot.destroy(screenshot_ids) 
    puts "#{screenshot_ids.size} screenshots have been deleted!" 
    end 
end 
+0

Пробовал выше код, но не работает. Благодарю. – Harika

+0

У меня была точка с запятой из запроса sql, попробуйте еще раз. И, пожалуйста, попробуйте запустить этот код с консоли, чтобы узнать, что происходит. Журнал ошибок будет полезен –

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