Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/55.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Can';我不知道如何让rufus调度程序使用.at而不是.in_Ruby On Rails_Ruby_Ruby On Rails 4_Background Process_Rufus Scheduler - Fatal编程技术网

Ruby on rails Can';我不知道如何让rufus调度程序使用.at而不是.in

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

我有两个模型:时间表和任务。任务属于日程表,日程表中有很多任务。我有一个任务的嵌套表单,它使用javascript通过按“添加任务”按钮动态创建更多任务表单。我正在尝试使用rufus_调度程序使任务具有用户输入的结束日期和结束时间。当一个任务完成时,它应该简单地将“yo-yo”打印到服务器上

我成功地使用以下代码在几秒钟内完成了第一项任务:

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调用创建的一个新线程,一段时间后,你的应用程序将在负载下崩溃。最好初始化一个调度程序,每次都使用它。谢谢,非常感谢。谢谢,非常感谢。