我使用rufus scheduler gem来运行后台作业。我正在使用这个宝石向twitter和facebook发送消息和图像。 下面是我的代码
def schedule_post_to_twitter(twitter_auth, file=nil)
scheduler = Rufus::Scheduler.new
scheduler.at self.post_at do
if file.present?
self.post_to_twitter(twitter_auth,file)
else
self.post_to_twitter(twitter_auth)
end
end
end
假设我将在" 2014-03-18 12:23:02"在开发过程中,它会在12.23本身发布消息,但在生产中它会立即发布。调度不适用于生产。请帮助我如何使它在生产中工作。
答案 0 :(得分:0)
所以你要为每个时间表创建一个新的rufus调度程序......这是一个坏主意,它浪费了资源。单个共享的rufus调度程序就足够了。
请阅读https://github.com/jmettraux/rufus-scheduler/#so-rails上的文档,了解如何通过Rails初始化程序设置rufus-scheduler实例。这个示例是从控制器进行调度,可以随意根据您的模型方法进行调度。
答案 1 :(得分:0)
通常,当rufus-scheduler立即触发时,意味着“at”就在过去。
尝试使用此代码查看该假设是否成立:
def schedule_post_to_twitter(twitter_auth, file=nil)
scheduler = Rufus::Scheduler.new # suicidal technique
scheduler.at self.post_at do
#if file.present?
# self.post_to_twitter(twitter_auth, file)
#else
# self.post_to_twitter(twitter_auth)
#end
p [ :post_at, self.post_at ]
p [ :post_at, Rufus::Scheduler.parse(self.post_at) ]
p [ :now, Time.now ]
end
end
请阅读我的其他答案。为每个计划启动一个新的rufus-scheduler实例是危险的......