可以通过rails接口触发rake任务吗?

时间:2010-12-13 16:50:48

标签: ruby-on-rails zip rake paperclip

或者我在考虑这个错误?基本上,我希望能够将zip文件上传到模型,上传后我想在其上运行一堆进程。能够从后端/控制台执行此操作,以及通过rails前端界面触发操作的方法将会很棒。

这个想法在这里:

图库有collection.zip

图库有很多孩子:项目

collection.zip包含每个项目的信息

我想触发一个批处理gallery.items.build进程,该进程将从zip中提取信息并使用它来创建新项目。我想过使用Paperclip :: Processor来完成这项任务,但是我还没有找到很多关于它如何工作的真正有用或全面的文档,而实验只会导致沮丧和困惑。我看到有些人为这类事情使用rake任务,但我真的不想使用控制台执行任务,而且我真的只想拥有一个按钮,它会显示“Generate Gallery”所有必要的任务。

那么,有没有办法做到这一点?这会被视为不良做法吗?如果是这样,还有另一种方法可以解决这个问题吗?

3 个答案:

答案 0 :(得分:4)

如果你想知道如何从rails运行rake任务,Ryan Bates有一个很棒的免费截屏视频,可以告诉你如何。

http://railscasts.com/episodes/127-rake-in-background

答案 1 :(得分:4)

delayed_jobresque被认为是后台处理的最佳做法,而不是运行佣金任务。

两者背后的核心理念:

  1. 需要在后台运行的批处理脚本或代码保存在lib
  2. 在请求周期中,作业被序列化并存储到DB(或任何支持的持久层或队列,例如RedisStarling)。
  3. 在后台运行的守护进程,将在队列中查找作业并按各种顺序处理它们(例如,优先级或fifo等)

答案 2 :(得分:2)

您可以在rails中触发rake任务,但我会编写逻辑来解压缩并处理类或模块中的zip文件。然后你可以在任何一个地方使用该代码。