如何从rake任务调用控制器操作?
问题描述:
我有一个控制器操作,生成一些excel报告,这需要大约10分钟的时间。有时我从我的webapp中调用它,这就是为什么它是一个动作。如何从rake任务调用控制器操作?
但我也想创建一个rake任务来运行它,所以我可以安排它自动运行一次。
任何方式来做到这一点?
答
您可以处理模型中的报告生成吗?模型should be doing most of the work anyway,可以从Rake任务访问:
task :reports => :environment do
...
# Do stuff with your models.
end
+1
我不这么认为,我需要渲染XML模板来生成excel报告 – Janak 2010-03-24 13:25:14
答
我认为你必须将你的代码移入你的模型。由于在模型中使用输出渲染的知识并不好,因此我建议将所有业务逻辑和数据操作放入模型中,然后将渲染代码放入您的rake任务中。这将使耙子任务类似于网络上使用的控制器 - 保持关注点分离。
你可以看看ActionView :: Base并从那里开始工作,找出如何触发模板的渲染。
正如其他人所说的,您必须将代码移到模型中。在控制器上完成的东西是一种不好的做法。 – kikito 2010-03-25 08:52:45