我正在尝试每隔30分钟使用when执行一个方法。但是我在安装时遇到了一些麻烦。
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
我不认为跑步者正在工作,因为我保存值的字段在控制台中仍显示为nil。
答案 0 :(得分: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
答案 1 :(得分:0)
我几乎可以肯定你有一个模型Post
。创建一个类方法:
class Post
...
def self.winner
...
end
end
但如果你只使用Post.winner
作为日程表,我更喜欢@xlembouras建议的rake任务。