如何从rake任务调用控制器操作?

时间:2010-03-24 10:34:10

标签: ruby-on-rails rake

我有一个控制器动作,可以生成许多excel报告,这大约需要10分钟。有时我会从我的webapp中调用它,这就是为什么它是一个动作。

但我也想创建一个rake任务来运行它,所以我可以安排它自动运行一晚。

有什么办法吗?

2 个答案:

答案 0 :(得分:3)

您可以处理模型中的报告生成吗?模型should be doing most of the work anyway可以从Rake任务访问:

task :reports => :environment do
  ...
  # Do stuff with your models.
end

答案 1 :(得分:3)

我认为您必须将代码移到模型中。由于将关于输出渲染的知识放在模型中是不好的,我建议将所有业务逻辑和数据操作放在模型中,然后将渲染代码放在rake任务中。这将使得rake任务类似于网络上使用的控制器 - 保持关注点的分离。

您可以查看ActionView :: Base并从那里开始研究如何触发模板渲染。