我有一个控制器动作,可以生成许多excel报告,这大约需要10分钟。有时我会从我的webapp中调用它,这就是为什么它是一个动作。
但我也想创建一个rake任务来运行它,所以我可以安排它自动运行一晚。
有什么办法吗?
答案 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并从那里开始研究如何触发模板渲染。