Ruby on rails Can';我不知道如何让rufus调度程序使用.at而不是.in
我有两个模型:时间表和任务。任务属于日程表,日程表中有很多任务。我有一个任务的嵌套表单,它使用javascript通过按“添加任务”按钮动态创建更多任务表单。我正在尝试使用rufus_调度程序使任务具有用户输入的结束日期和结束时间。当一个任务完成时,它应该简单地将“yo-yo”打印到服务器上 我成功地使用以下代码在几秒钟内完成了第一项任务:Ruby on rails Can';我不知道如何让rufus调度程序使用.at而不是.in,ruby-on-rails,ruby,ruby-on-rails-4,background-process,rufus-scheduler,Ruby On Rails,Ruby,Ruby On Rails 4,Background Process,Rufus Scheduler,我有两个模型:时间表和任务。任务属于日程表,日程表中有很多任务。我有一个任务的嵌套表单,它使用javascript通过按“添加任务”按钮动态创建更多任务表单。我正在尝试使用rufus_调度程序使任务具有用户输入的结束日期和结束时间。当一个任务完成时,它应该简单地将“yo-yo”打印到服务器上 我成功地使用以下代码在几秒钟内完成了第一项任务: def set_schedule scheduler = Rufus::Scheduler.new scheduler.in self.ta
def set_schedule
scheduler = Rufus::Scheduler.new
scheduler.in self.tasks.first.timeframe do
puts 'yo yo yo'
end
end
在上面的代码中,timeframe是一个整数字段,用户在给定的秒数下输入,作业应在该秒数之前发生
问题是上面的代码使用了一个间隔,我想使用一个确切的日期和时间。因此,我将时间范围更改为字符串,并让用户以这种格式输入日期:“12/18/2013”。以下是我尝试过的:
def set_schedule
scheduler = Rufus::Scheduler.new
scheduler.at (self.tasks.first.timeframe + " " + self.tasks.first.complete_time.to_s + " EST")do
puts 'yo yo yo'
end
end
需要明确的是,timeframe是一个由日期组成的字符串,complete_time是一个由任务应该结束的时间组成的时间字段
此代码不起作用。“溜溜球”仍在打印,但它只是立即打印
我在webrick上运行rails,并使用postgres数据库。我正在使用RubyonRails4和Ruby2。我非常感谢你的帮助。谢谢
更新:
我意识到我的代码中有两个错误。正在将完成时间自动转换为无法读取的格式。我通过将完整时间更改为字符串来修复此问题。此外,我意识到我对.at方法的论证没有引用。我把这个修好了。然而,我仍然有同样的问题。而不是等到所说的时间放“溜溜球”,而是马上放。以下是新代码:
def set_schedule
scheduler = Rufus::Scheduler.new
scheduler.at ("#{self.tasks.first.timeframe} #{self.tasks.first.complete_time} EST")do
puts 'yo yo yo'
end
end
scheduler.at方法转到服务器,如下所示:
scheduler.at("12/03/2013 12:33:00 EST")
当然,用户输入的时间和日期更改加深了,上面的代码只是我最后一次运行它。当rufus scheduler#at或#in立即触发其块时,意味着调度时间过去了
也许这是个时区问题
您可以通过执行以下操作来检查rufus scheduler如何查看您的字符串:
require 'rufus-scheduler'
p Rufus::Scheduler.parse('12/03/2013 12:33:00 EST')
在我的系统(Debian GNU Linux、Ruby 1.9.3p392或Ruby 2.0.0p195)上,这会产生:
2013-03-12 17:03:00 UTC
当rufus scheduler#at或#in立即触发其块时,表示调度时间已过
也许这是个时区问题
您可以通过执行以下操作来检查rufus scheduler如何查看您的字符串:
require 'rufus-scheduler'
p Rufus::Scheduler.parse('12/03/2013 12:33:00 EST')
在我的系统(Debian GNU Linux、Ruby 1.9.3p392或Ruby 2.0.0p195)上,这会产生:
2013-03-12 17:03:00 UTC
喂,问题现在解决了吗?如果没有,现在的问题是什么?一件事:您是否意识到每次调用#set#u schedule时都在创建一个调度器?这是为每个#set#u schedule调用创建的一个新线程,一段时间后,你的应用程序将在负载下崩溃。最好初始化一个调度程序,每次都使用它。您好,问题现在解决了吗?如果没有,现在的问题是什么?一件事:您是否意识到每次调用#set#u schedule时都在创建一个调度器?这是为每个#set#u schedule调用创建的一个新线程,一段时间后,你的应用程序将在负载下崩溃。最好初始化一个调度程序,每次都使用它。谢谢,非常感谢。谢谢,非常感谢。