延迟任务终于对我有用了(在RoR3中使用collectiveidea gem),用于一些任务。第一个任务是管理员上传图库的zip文件并提取每个图像以构建属于该图库的照片对象。第二个任务是删除图库。这些图库可能很大(约3分钟内有550张图片),即使它没有完全显示,我也希望能够显示图库仍在处理或排队等待删除。
现在,我只是使用默认技术(@gallery.delay.extract_photos和@gallery.delay.destroy)。
当管理员单击提取链接时,他们将被重定向到图库页面(为空白),并显示一个快闪消息告诉他们正在处理图库。定期刷新页面会显示已提取到的图像列表。但是,由于刷新一次会清除快闪消息,因此不太清楚作业何时完成。基本上,我想能够显示每秒更新的进度条或数量进度旁边的进度
删除大型图库也可能需要很长时间,因此我也希望将其保留为延迟的工作。但是,在删除后转到着陆页时,图库仍然存在,因此直到完全消失后刷新后才会显示。我想要的是要么有一种标记它为排队等待删除的方法,要么显示进度条,并在删除完成后消失。
我寻找RoR3 AJAX帮助,但似乎我找到的所有内容都是针对2.3.8的,而且已过时。此外,我需要知道如何跟踪作业是否仍在执行,我还没有在collectiveidea的文档中发现类似的东西。我想,由于作业存储在表中,也许我可以使用DelayedJob.thisjob.exists?或类似的东西来跟踪它,但尝试在rails控制台中使用DelayedJob.all只给我带来了错误(即使作业正在运行)。
因此,我的问题概括如下:如何跟踪延迟的作业并以任何这些方式在视图中显示其进度? [编辑] 我知道我可以在图库页面上进行活动轮询,但我不想一直发生这种情况-只有在执行作业(或已安排)时才会发生。是否有一种测试正在执行或计划执行作业的方法?因为我没有找到一种在视图中跟踪它的方法。
谢谢。
现在,我只是使用默认技术(@gallery.delay.extract_photos和@gallery.delay.destroy)。
当管理员单击提取链接时,他们将被重定向到图库页面(为空白),并显示一个快闪消息告诉他们正在处理图库。定期刷新页面会显示已提取到的图像列表。但是,由于刷新一次会清除快闪消息,因此不太清楚作业何时完成。基本上,我想能够显示每秒更新的进度条或数量进度旁边的进度
([======] 33/86)
,并/或更新图库以显示添加的图像。删除大型图库也可能需要很长时间,因此我也希望将其保留为延迟的工作。但是,在删除后转到着陆页时,图库仍然存在,因此直到完全消失后刷新后才会显示。我想要的是要么有一种标记它为排队等待删除的方法,要么显示进度条,并在删除完成后消失。
我寻找RoR3 AJAX帮助,但似乎我找到的所有内容都是针对2.3.8的,而且已过时。此外,我需要知道如何跟踪作业是否仍在执行,我还没有在collectiveidea的文档中发现类似的东西。我想,由于作业存储在表中,也许我可以使用DelayedJob.thisjob.exists?或类似的东西来跟踪它,但尝试在rails控制台中使用DelayedJob.all只给我带来了错误(即使作业正在运行)。
因此,我的问题概括如下:如何跟踪延迟的作业并以任何这些方式在视图中显示其进度? [编辑] 我知道我可以在图库页面上进行活动轮询,但我不想一直发生这种情况-只有在执行作业(或已安排)时才会发生。是否有一种测试正在执行或计划执行作业的方法?因为我没有找到一种在视图中跟踪它的方法。
谢谢。