2015-01-26 2 views
0

Я пытаюсь использовать каждый раз, когда вы выполняете метод каждые 30 минут. Однако у меня возникли проблемы с настройкой.всякий раз, когда используется метод rails 4

schedule.rb

every 1.minutes do 
    runner "Post.winner" 
end 

post.rb

class Post < ActiveRecord::Base 

module Post 
    def winner 
     #do some stuff that saves a new value in database 

Я не думаю, что бегун работает, потому что поле, которое я сохранить значение по-прежнему отображается как ноль в консоли ,

ответ

3

Вы, скорее всего, не хотите запускать метод контроллера (например, у вас нет запроса на обслуживание там). Либо создайте runner из класса или модуля.

# schedule.rb 
every 30.minutes do 
    runner "Post.winner" 
end 

#lib/post.rb 
module Post 
    def self.winner 
    ... 
    end 
end 

или rake задача lib/tasks/

# schedule.rb 
every 30.minutes do 
    rake post:winner 
end 

#lib/tasks/post.rake 

namespace :post do  
    desc 'calculate winner' 
    task :winner do 
    ... 
    end 
end 
+0

Я пытаюсь использовать бегун. однако у меня создается впечатление, что его никогда не называют. Я обновил вопрос –

0

Я почти уверен, что у вас есть модель Post. Создать метод класса:

class Post 
    ... 
    def self.winner 
    ... 
    end 
end 

Но если вы используете Post.winner только графику, я предпочитаю задача грабель, как @xlembouras предложил.

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